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

CI Pipeline

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

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

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

Порядок швидкого завершення при збої

Завдання впорядковано так, щоб дешеві перевірки завершувалися зі збоєм раніше, ніж запустяться дорогі:
  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-fast-extensions, 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 цей етап пропускається, і матриця залишається зосередженою на звичайних етапах тестів/каналів.

Runners

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 test:gateway:watch-regression
pnpm test           # vitest-тести
pnpm test:channels
pnpm check:docs     # форматування документації + lint + биті посилання
pnpm build          # збірка dist, коли важливі етапи CI artifact/build-smoke