-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
- YCLIENTS
- Маркетплейс интеграций
- Плагинизация
- Введение в плагинизацию
- Жизненный цикл плагина
Жизненный цикл плагина
Ниже приведен полный обзор этапов, через которые проходит любой плагин в экосистеме YCLIENTS — будь то Frontend-, Backend-плагин или их комбинация. Этот материал поможет сориентироваться в процессе и понять, что происходит на каждом шаге.
Регистрация как разработчика
- Создайте аккаунт разработчика маркетплейса YCLIENTS.
- Создайте карточку приложения в маркетплейсе по руководству.
Согласование условий и юридическое оформление
1. Синхронизация с отделом развития бизнеса.
Для начала сотрудничества отправьте свое предложение на почту: partner@yclients.tech
. В рамках общения с отделом Business Development вы совместно пройдете следующие этапы:
- Определение условий размещения плагина или приложения в экосистеме YCLIENTS.
- Обсуждение продуктовых, технических и организационных аспектов взаимодействия.
- Подписание партнерского соглашения.
2. Получение VPN‑доступа ко внутренней сети YCLIENTS и к системе контроля версий плагинов. Вы получаете доступ к инфраструктуре YCLIENTS, доступ к рабочему пространству для публикации кода плагинов.
3. Выдача ролей и ключей: создание SSH‑ключей, настройка прав в GitLab‑группе plugins
, настройка переменных окружения в pipeline.
Создание
1. Структура репозитория плагина.
Чтобы упростить старт разработки, мы подготовили пример плагина с базовой структурой. Вы можете использовать этот репозиторий как шаблон: клонировать, переименовать и начать разработку под свои задачи.
По ссылке описана структура frontend-плагина.
2. Разработка функциональности.
- Вам необходимо ознакомиться с текущими возможностями плагинизации в документации. Если для реализации ваших бизнес-сценариев не хватает функциональности, например, зон встраивания или событий — необходимо подать заявку на их добавление в отдел развития бизнеса YCLIENTS.
- Реализуйте пользовательский интерфейс и бизнес-логику плагина. Настройте обработку событий и взаимодействие с хост-приложением (например, через
DocumentEventEmitter
во frontend-части). Параллельно создайте backend‑часть, если она требуется. - Проверьте функциональность плагина самостоятельно. Для UI плагинов поддерживается подключение JS файлов через команду консоли, описано в документации по тестированию.
Модерация
Код‑ревью
На этапе код‑ревью наша задача — убедиться, что код плагина не содержит вредоносных элементов, а также соответствуют стандартам качества и архитектуре платформы.
1. Проверка стиля и читаемости
Рецензенты оценивают форматирование, читаемость и именование:
- Код должен следовать принятому style‑guide (ESLint/Prettier).
- Все новые модули и функции должны быть документированы.
2. Архитектурные аспекты
- Соответствие общей структуре проекта (frontend/backend).
- Правильное разделение ответственности между компонентами.
- Отсутствуют циклические вызовы, не оптимальный код, лишние вызовы
- Отсутствие дублирования логики.
3. Безопасность и надежность
- Проверка на уязвимости (XSS, инъекции).
- Валидация входных данных и защита от некорректных сценариев.
4. Обратная связь
Рецензенты оставляют комментарии и, при необходимости, просят доработать участки кода. После исправления замечаний MR повторно проверяется и мержится только при одобрении.
Тестирование
На данном этапе наша команда проверяет и тестирует плагин по следующим критериям:
- Соответствие описания плагина реальному поведению.
- Наличие багов.
- Соблюдение критериев безопасности.
- Соблюдение Федерального закона «О персональных данных» и иных законов Российской Федерации.
- Заполнение карточки приложения маркетплейса (для последующей публикации).
Публикация
После успешного прохождения всех проверок ваш плагин становится доступен реальным пользователям:
1. Появление в Маркетплейсе
Плагин отображается в маркетплейсе с актуальным описанием, скриншотами и инструкциями по установке.
2. Включение и настройка
Клиенты могут включить плагин, настроить и пользоваться.
Обновление версии
Когда вы выпускаете новую версию плагина, процесс повторяется аналогично первой публикации:
- Изменение версии.
- Сборка и проверка.
Генерируется сборка новой версии плагина. - Модерация и тестирование.
Проходит цикл код‑ревью и тестирования, чтобы убедиться, что обновление не нарушает работу. - Публикация.
Обновленный плагин публикуется и появляется в маркетплейсе, клиентам автоматически загружается последняя актуальная версия плагина.
FAQ
С чего следует начинать разработку плагина?
До разработки плагина рекомендуем связаться с отделом развития бизнеса YCLIENTS и рассказать о своих планах, концепции плагина. Это поможет понять целесообразность создания плагина, вероятность добавления его в публичный маркетплейс и упростит дальнейшее прохождение этапов модерации и тестирования.
Что делать если я хочу добавить плагин в зоны, которые еще не поддерживаются плагинизацией?
После общения с отделом развития бизнеса мы сможем взять в работу поддержку новых зон встраивания, что позволит вам реализовать плагин.