Перейти до основного вмісту

Конвеєр CI

CI запускається під час кожного push до main і для кожного pull request. Він використовує розумне визначення області змін, щоб пропускати дорогі завдання, коли змінено лише не пов’язані між собою частини.

Огляд завдань

ЗавданняПризначенняКоли запускається
preflightВизначає зміни лише в документації, змінені області, змінені розширення та будує маніфест CIЗавжди для push і PR, що не є чернетками
security-fastВиявлення приватних ключів, аудит workflow через zizmor, аудит production-залежностейЗавжди для push і PR, що не є чернетками
build-artifactsЗбирає dist/ і Control UI один раз, завантажує повторно використовувані артефакти для залежних завданьЗміни, релевантні для Node
checks-fast-coreШвидкі Linux-ланцюжки коректності, такі як перевірки bundled/plugin-contract/protocolЗміни, релевантні для Node
checks-node-extensionsПовні шарди тестів bundled-plugin для всього набору розширеньЗміни, релевантні для Node
checks-node-core-testШарди основних тестів Node, за винятком ланцюжків channel, bundled, contract і extensionЗміни, релевантні для Node
extension-fastСфокусовані тести лише для змінених bundled pluginsКоли виявлено зміни в розширеннях
checkОсновний локальний шлюз у CI: pnpm check плюс pnpm build:strict-smokeЗміни, релевантні для Node
check-additionalЗахист архітектури, меж модулів, циклів імпорту, а також regression harness для спостереження gatewayЗміни, релевантні для Node
build-smokeSmoke-тести зібраного CLI та smoke-тест пам’яті під час запускуЗміни, релевантні для Node
checksРешта Linux-ланцюжків Node: тести channel і сумісність Node 22 лише для pushЗміни, релевантні для Node
check-docsФорматування документації, lint і перевірки зламаних посиланьКоли змінено документацію
skills-pythonRuff + pytest для Skills на основі PythonЗміни, релевантні для Python Skills
checks-windowsСпецифічні для Windows ланцюжки тестівЗміни, релевантні для Windows
macos-nodeЛанцюжок тестів TypeScript на macOS з використанням спільних зібраних артефактівЗміни, релевантні для macOS
macos-swiftSwift lint, збірка і тести для застосунку macOSЗміни, релевантні для macOS
androidМатриця збірки і тестів AndroidЗміни, релевантні для Android

Порядок Fail-Fast

Завдання впорядковані так, щоб дешеві перевірки падали раніше, ніж запускаються дорогі:
  1. preflight вирішує, які ланцюжки взагалі існують. Логіка docs-scope і changed-scope — це кроки всередині цього завдання, а не окремі завдання.
  2. security-fast, check, check-additional, check-docs і skills-python падають швидко, не чекаючи важчих матричних завдань для артефактів і платформ.
  3. build-artifacts виконується паралельно зі швидкими Linux-ланцюжками, щоб залежні споживачі могли почати роботу, щойно спільна збірка буде готова.
  4. Після цього розгалужуються важчі платформні та runtime-ланцюжки: checks-fast-core, checks-node-extensions, checks-node-core-test, extension-fast, checks, checks-windows, macos-node, macos-swift і android.
Логіка області змін міститься в scripts/ci-changed-scope.mjs і покрита unit-тестами в src/scripts/ci-changed-scope.test.ts. Окремий workflow install-smoke повторно використовує той самий скрипт області змін через власне завдання preflight. Він обчислює run_install_smoke на основі вужчого сигналу changed-smoke, тому Docker/install smoke запускається лише для змін, пов’язаних із встановленням, пакуванням і контейнерами. Для push матриця checks додає ланцюжок compat-node22, який запускається лише для push. Для pull request цей ланцюжок пропускається, а матриця залишається зосередженою на звичайних тестових/channel-ланцюжках.

Runner-и

RunnerЗавдання
blacksmith-16vcpu-ubuntu-2404preflight, security-fast, build-artifacts, Linux-перевірки, перевірки документації, Python Skills, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

Локальні еквіваленти

pnpm check          # типи + lint + форматування
pnpm build:strict-smoke
pnpm check:import-cycles
pnpm test:gateway:watch-regression
pnpm test           # тести vitest
pnpm test:channels
pnpm check:docs     # форматування документації + lint + зламані посилання
pnpm build          # збірка dist, коли важливі ланцюжки CI для артефактів/build-smoke