Przejdź do głównej treści

Potok CI

CI uruchamia się przy każdym pushu do main i dla każdego pull requestu. Używa inteligentnego określania zakresu, aby pomijać kosztowne zadania, gdy zmieniły się tylko niepowiązane obszary.

Przegląd zadań

ZadanieCelKiedy się uruchamia
preflightWykrywanie zmian tylko w dokumentacji, zmienionych zakresów, zmienionych rozszerzeń oraz budowanie manifestu CIZawsze dla pushy i PR-ów, które nie są draftami
security-fastWykrywanie kluczy prywatnych, audyt workflow przez zizmor, audyt zależności produkcyjnychZawsze dla pushy i PR-ów, które nie są draftami
build-artifactsBudowanie dist/ i Control UI jeden raz, przesyłanie artefaktów wielokrotnego użytku dla zadań zależnychZmiany istotne dla Node
checks-fast-coreSzybkie linie poprawności na Linuksie, takie jak kontrole bundled/plugin-contract/protocolZmiany istotne dla Node
checks-fast-extensionsAgregowanie linii shardów rozszerzeń po zakończeniu checks-fast-extensions-shardZmiany istotne dla Node
extension-fastUkierunkowane testy tylko dla zmienionych bundlowanych pluginówGdy wykryto zmiany rozszerzeń
checkGłówna lokalna bramka w CI: pnpm check plus pnpm build:strict-smokeZmiany istotne dla Node
check-additionalZabezpieczenia architektury i granic oraz harness regresji watch gatewayZmiany istotne dla Node
build-smokeTesty smoke zbudowanego CLI i smoke pamięci przy uruchamianiuZmiany istotne dla Node
checksCięższe linie Linux Node: pełne testy, testy kanałów i zgodność Node 22 tylko dla pushówZmiany istotne dla Node
check-docsFormatowanie dokumentacji, lint i sprawdzanie uszkodzonych linkówZmieniono dokumentację
skills-pythonRuff + pytest dla Skills opartych na PythonieZmiany istotne dla Skills w Pythonie
checks-windowsLinie testowe specyficzne dla WindowsZmiany istotne dla Windows
macos-nodeLinia testów TypeScript na macOS z użyciem współdzielonych zbudowanych artefaktówZmiany istotne dla macOS
macos-swiftLint, build i testy Swift dla aplikacji macOSZmiany istotne dla macOS
androidMacierz buildów i testów AndroidaZmiany istotne dla Androida

Kolejność fail-fast

Zadania są uporządkowane tak, aby tanie kontrole kończyły się błędem przed uruchomieniem kosztownych:
  1. preflight decyduje, które linie w ogóle istnieją. Logika docs-scope i changed-scope to kroki wewnątrz tego zadania, a nie osobne zadania.
  2. security-fast, check, check-additional, check-docs i skills-python kończą się błędem szybko, bez czekania na cięższe zadania artefaktów i macierzy platform.
  3. build-artifacts nakłada się na szybkie linie Linuksa, aby zadania zależne mogły zacząć się, gdy tylko współdzielony build będzie gotowy.
  4. Następnie rozgałęziają się cięższe linie platformowe i środowiskowe: checks-fast-core, checks-fast-extensions, extension-fast, checks, checks-windows, macos-node, macos-swift i android.
Logika zakresu znajduje się w scripts/ci-changed-scope.mjs i jest objęta testami jednostkowymi w src/scripts/ci-changed-scope.test.ts. Oddzielny workflow install-smoke ponownie wykorzystuje ten sam skrypt zakresu przez własne zadanie preflight. Oblicza run_install_smoke na podstawie węższego sygnału changed-smoke, więc Docker/install smoke uruchamia się tylko dla zmian istotnych dla instalacji, pakowania i kontenerów. Przy pushach macierz checks dodaje linię compat-node22, uruchamianą tylko dla pushów. W pull requestach ta linia jest pomijana, a macierz pozostaje skupiona na zwykłych liniach testów/kanałów.

Runnery

RunnerZadania
blacksmith-16vcpu-ubuntu-2404preflight, security-fast, build-artifacts, kontrole Linuksa, kontrole dokumentacji, Skills w Pythonie, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

Lokalne odpowiedniki

pnpm check          # typy + lint + format
pnpm build:strict-smoke
pnpm test:gateway:watch-regression
pnpm test           # testy vitest
pnpm test:channels
pnpm check:docs     # format dokumentacji + lint + uszkodzone linki
pnpm build          # buduj dist, gdy mają znaczenie linie CI artifact/build-smoke