Сайт

Проверки перед публикацией

Перед выпуском расширения проверки перед публикацией могут запускать ваши собственные команды, такие как проверка типов, линтинг, тесты, сборка. Если какая-либо проверка не проходит, публикация блокируется, поэтому сломанная версия никогда не попадёт в Marketplace. Эти проверки включаются по желанию: добавьте файл .fragmenta/ci.json, и они будут запускаться автоматически; без него публикация работает как раньше.

.fragmenta/ci.json

Добавьте .fragmenta/ci.json в корень расширения. Каждый шаг — это shell-команда, выполняемая по порядку:

{
  "version": 1,
  "install": "pnpm install --frozen-lockfile",
  "on": ["publish"],
  "steps": [
    { "name": "Types", "run": "pnpm check:types" },
    { "name": "Lint", "run": "pnpm lint" },
    { "name": "Tests", "run": "pnpm test", "timeout": 600000 },
    { "name": "Build", "run": "pnpm build" },
    { "name": "E2E (non-blocking)", "run": "pnpm test:e2e", "continueOnError": true }
  ]
}

Поля

| Поле | Тип | Описание | | --- | --- | --- | | version | 1 | Версия конфига. Обязательное. | | steps | array | Проверки, по порядку. У каждой есть name и команда run. | | steps[].name | string | Подпись, отображаемая в диалоге публикации. | | steps[].run | string | Shell-команда, выполняется в папке extension. | | steps[].timeout | number | Необязательный таймаут шага в миллисекундах. | | steps[].continueOnError | boolean | При true падение становится предупреждением и не блокирует публикацию. По умолчанию false. | | install | string | Необязательная команда, выполняется первой, до шагов — обычно установка зависимостей. | | on | array | Когда запускать проверки: ["publish"] (по умолчанию) и/или ["save"]. См. Когда запускаются проверки. |

Как выполняются проверки

  1. Вы нажимаете «Опубликовать»

    Проверки — первая стадия релиза: они выполняются до бампа версии и до создания Git-тега. Пока они не завершатся, ничего не публикуется.

  2. Каждый шаг выполняется по порядку

    Если настроена команда install, она выполняется первой; после этого по очереди выполняются шаги проверок. По мере выполнения их вывод в реальном времени отображается во всплывающем окне Проверки в диалоге. Для каждого шага отображается индикатор выполнения, пока он выполняется, сколько времени он занял, и раскрываемый лог его вывода.

  3. Успех, предупреждение или блокировка

    Если все шаги проходят, публикация продолжается. Если какой-либо шаг не проходит, публикация блокируется, оставшиеся шаги пропускаются, и показывается лог шага с ошибкой. Исправьте проблему и нажмите Повторить проверки. Шаг, отмеченный continueOnError выдаёт только предупреждение и никогда не блокирует публикацию.

Кнопка «Опубликовать» содержит индикатор Проверки, который показывает текущий статус проверок в реальном времени — ожидание, выполнение, успех, предупреждения или ошибка. Нажатие на индикатор открывает всплывающее окно с подробностями.

Когда запускаются проверки

Поле on определяет, какие действия запускают проверки:

  • ["publish"] (по умолчанию) — проверки запускаются, когда вы публикуете для всех пользователей.
  • Добавьте "save" — проверки также запускаются при «Опубликовать внутри команды».

Заметки

  • Секреты не передаются. Шаги выполняются только с вашим локальным окружением — ни токены Marketplace, ни Git-креды в них не пробрасываются.
  • Невалидная конфигурация блокирует публикацию. Если .fragmenta/ci.json не парсится, публикация блокируется с ошибкой парсинга, пока вы её не исправите.
  • Нет файла — нет проверок. Extension без .fragmenta/ci.json публикуется как раньше.