Potok CI
CI uruchamia się przy każdym pushu domain 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ń
| Zadanie | Cel | Kiedy się uruchamia |
|---|---|---|
preflight | Wykrywa zmiany tylko w dokumentacji, zmienione zakresy, zmienione rozszerzenia i buduje manifest CI | Zawsze przy pushach i PR-ach, które nie są wersjami roboczymi |
security-fast | Wykrywanie kluczy prywatnych, audyt workflow przez zizmor, audyt zależności produkcyjnych | Zawsze przy pushach i PR-ach, które nie są wersjami roboczymi |
build-artifacts | Buduje dist/ i Control UI jeden raz, przesyła artefakty wielokrotnego użytku dla zadań zależnych | Zmiany istotne dla Node |
checks-fast-core | Szybkie linie poprawności na Linuksie, takie jak sprawdzenia bundled/plugin-contract/protocol | Zmiany istotne dla Node |
checks-node-extensions | Pełne shardy testów bundled-plugin w całym zestawie rozszerzeń | Zmiany istotne dla Node |
checks-node-core-test | Shardy testów głównych Node, z wyłączeniem linii kanałów, bundled, contract i extension | Zmiany istotne dla Node |
extension-fast | Ukierunkowane testy tylko dla zmienionych bundled plugins | Gdy wykryto zmiany rozszerzeń |
check | Główna lokalna bramka w CI: pnpm check plus pnpm build:strict-smoke | Zmiany istotne dla Node |
check-additional | Zabezpieczenia architektury, granic i cykli importów oraz harness regresji watch gateway | Zmiany istotne dla Node |
build-smoke | Testy smoke zbudowanego CLI i smoke zużycia pamięci przy starcie | Zmiany istotne dla Node |
checks | Pozostałe linie Linux Node: testy kanałów i zgodność tylko dla pushy z Node 22 | Zmiany istotne dla Node |
check-docs | Formatowanie dokumentacji, lint i sprawdzanie uszkodzonych linków | Zmieniono dokumentację |
skills-python | Ruff + pytest dla Skills opartych na Pythonie | Zmiany istotne dla Skills w Pythonie |
checks-windows | Linie testowe specyficzne dla Windows | Zmiany istotne dla Windows |
macos-node | Linia testów TypeScript na macOS z użyciem współdzielonych zbudowanych artefaktów | Zmiany istotne dla macOS |
macos-swift | Swift lint, build i testy dla aplikacji macOS | Zmiany istotne dla macOS |
android | Macierz buildów i testów Androida | Zmiany 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:preflightdecyduje, które linie w ogóle istnieją. Logikadocs-scopeichanged-scopeto kroki wewnątrz tego zadania, a nie osobne zadania.security-fast,check,check-additional,check-docsiskills-pythonkończą się szybko bez czekania na cięższe zadania artefaktów i macierzy platform.build-artifactsnakłada się czasowo na szybkie linie Linuksa, aby zadania zależne mogły wystartować, gdy tylko współdzielony build będzie gotowy.- 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-swiftiandroid.
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
| Runner | Zadania |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | preflight, security-fast, build-artifacts, sprawdzenia Linuksa, sprawdzenia dokumentacji, Skills w Pythonie, android |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos-node, macos-swift |