Проверки перед публикацией
Перед выпуском расширения проверки перед публикацией могут запускать ваши собственные команды, такие как проверка типов, линтинг, тесты, сборка. Если какая-либо проверка не проходит, публикация блокируется, поэтому сломанная версия никогда не попадёт в 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"]. См. Когда запускаются проверки. |
Как выполняются проверки
Вы нажимаете «Опубликовать»
Проверки — первая стадия релиза: они выполняются до бампа версии и до создания Git-тега. Пока они не завершатся, ничего не публикуется.
Каждый шаг выполняется по порядку
Если настроена команда
install, она выполняется первой; после этого по очереди выполняются шаги проверок. По мере выполнения их вывод в реальном времени отображается во всплывающем окне Проверки в диалоге. Для каждого шага отображается индикатор выполнения, пока он выполняется, сколько времени он занял, и раскрываемый лог его вывода.Успех, предупреждение или блокировка
Если все шаги проходят, публикация продолжается. Если какой-либо шаг не проходит, публикация блокируется, оставшиеся шаги пропускаются, и показывается лог шага с ошибкой. Исправьте проблему и нажмите Повторить проверки. Шаг, отмеченный
continueOnErrorвыдаёт только предупреждение и никогда не блокирует публикацию.
Кнопка «Опубликовать» содержит индикатор Проверки, который показывает текущий статус проверок в реальном времени — ожидание, выполнение, успех, предупреждения или ошибка. Нажатие на индикатор открывает всплывающее окно с подробностями.
Когда запускаются проверки
Поле on определяет, какие действия запускают проверки:
["publish"](по умолчанию) — проверки запускаются, когда вы публикуете для всех пользователей.- Добавьте
"save"— проверки также запускаются при «Опубликовать внутри команды».
Заметки
- Секреты не передаются. Шаги выполняются только с вашим локальным окружением — ни токены Marketplace, ни Git-креды в них не пробрасываются.
- Невалидная конфигурация блокирует публикацию. Если
.fragmenta/ci.jsonне парсится, публикация блокируется с ошибкой парсинга, пока вы её не исправите. - Нет файла — нет проверок. Extension без
.fragmenta/ci.jsonпубликуется как раньше.