Przejdź do głównej treści

Potok CI

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

Przegląd zadań

ZadanieCelKiedy się uruchamia
preflightWykrywa zmiany tylko w dokumentacji, zmienione zakresy, zmienione rozszerzenia i buduje manifest CIZawsze przy pushach i PR-ach, które nie są wersjami roboczymi
security-fastWykrywanie kluczy prywatnych, audyt workflow przez zizmor, audyt zależności produkcyjnychZawsze przy pushach i PR-ach, które nie są wersjami roboczymi
build-artifactsBuduje dist/ i Control UI jeden raz, przesyła artefakty wielokrotnego użytku dla zadań zależnychZmiany istotne dla Node
checks-fast-coreSzybkie linie poprawności na Linuksie, takie jak sprawdzenia bundled/plugin-contract/protocolZmiany istotne dla Node
checks-node-extensionsPełne shardy testów bundled-plugin w całym zestawie rozszerzeńZmiany istotne dla Node
checks-node-core-testShardy testów głównych Node, z wyłączeniem linii kanałów, bundled, contract i extensionZmiany istotne dla Node
extension-fastUkierunkowane testy tylko dla zmienionych bundled pluginsGdy wykryto zmiany rozszerzeń
checkGłówna lokalna bramka w CI: pnpm check plus pnpm build:strict-smokeZmiany istotne dla Node
check-additionalZabezpieczenia architektury, granic i cykli importów oraz harness regresji watch gatewayZmiany istotne dla Node
build-smokeTesty smoke zbudowanego CLI i smoke zużycia pamięci przy starcieZmiany istotne dla Node
checksPozostałe linie Linux Node: testy kanałów i zgodność tylko dla pushy z Node 22Zmiany 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-swiftSwift lint, build i testy 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 sprawdzenia kończyły się błędem, zanim uruchomią się droższe:
  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ę szybko bez czekania na cięższe zadania artefaktów i macierzy platform.
  3. build-artifacts nakłada się czasowo na szybkie linie Linuksa, aby zadania zależne mogły wystartować, gdy tylko współdzielony build będzie gotowy.
  4. Następnie rozgałęziają się cięższe linie platformowe i runtime: checks-fast-core, checks-node-extensions, checks-node-core-test, 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. Osobny workflow install-smoke używa ponownie tego samego skryptu zakresu przez własne zadanie preflight. Oblicza run_install_smoke na podstawie węższego sygnału changed-smoke, więc smoke Dockera/instalacji uruchamia się tylko dla zmian istotnych dla instalacji, pakietowania i kontenerów. Przy pushach macierz checks dodaje linię compat-node22, uruchamianą tylko dla pushy. Przy pull requestach ta linia jest pomijana, a macierz pozostaje skupiona na normalnych liniach testów/kanałów.

Runnery

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

Lokalne odpowiedniki

pnpm check          # typy + lint + formatowanie
pnpm build:strict-smoke
pnpm check:import-cycles
pnpm test:gateway:watch-regression
pnpm test           # testy vitest
pnpm test:channels
pnpm check:docs     # formatowanie dokumentacji + lint + uszkodzone linki
pnpm build          # buduje dist, gdy mają znaczenie linie artefaktów/build-smoke w CI