Pipeline CI
La CI viene eseguita a ogni push sumain e per ogni pull request. Usa uno scoping intelligente per saltare i job costosi quando sono cambiate solo aree non correlate.
Panoramica dei job
| Job | Scopo | Quando viene eseguito |
|---|---|---|
preflight | Rileva modifiche solo alla documentazione, ambiti cambiati, estensioni cambiate e costruisce il manifest CI | Sempre su push e PR non draft |
security-fast | Rilevamento di chiavi private, audit dei workflow tramite zizmor, audit delle dipendenze di produzione | Sempre su push e PR non draft |
build-artifacts | Esegue la build di dist/ e della Control UI una volta, carica artefatti riutilizzabili per i job downstream | Modifiche rilevanti per Node |
checks-fast-core | Lane Linux rapide di correttezza come controlli bundled/plugin-contract/protocol | Modifiche rilevanti per Node |
checks-fast-extensions | Aggrega le lane shard delle estensioni dopo il completamento di checks-fast-extensions-shard | Modifiche rilevanti per Node |
extension-fast | Test mirati solo per i bundled plugin modificati | Quando vengono rilevate modifiche alle estensioni |
check | Gate locale principale nella CI: pnpm check più pnpm build:strict-smoke | Modifiche rilevanti per Node |
check-additional | Guardrail di architettura e boundary più l’harness di regressione gateway watch | Modifiche rilevanti per Node |
build-smoke | Smoke test della CLI buildata e smoke test della memoria all’avvio | Modifiche rilevanti per Node |
checks | Lane Linux Node più pesanti: test completi, test dei canali e compatibilità Node 22 solo per push | Modifiche rilevanti per Node |
check-docs | Controlli di formattazione, lint e link non funzionanti della documentazione | Documentazione modificata |
skills-python | Ruff + pytest per gli Skills basati su Python | Modifiche rilevanti per skill Python |
checks-windows | Lane di test specifiche per Windows | Modifiche rilevanti per Windows |
macos-node | Lane di test TypeScript su macOS che usa gli artefatti buildati condivisi | Modifiche rilevanti per macOS |
macos-swift | Lint, build e test Swift per l’app macOS | Modifiche rilevanti per macOS |
android | Matrice di build e test Android | Modifiche rilevanti per Android |
Ordine fail-fast
I job sono ordinati in modo che i controlli economici falliscano prima che vengano eseguiti quelli più costosi:preflightdecide quali lane esistono del tutto. La logicadocs-scopeechanged-scopeè composta da step interni a questo job, non da job separati.security-fast,check,check-additional,check-docseskills-pythonfalliscono rapidamente senza aspettare i job più pesanti della matrice artefatti e piattaforme.build-artifactssi sovrappone alle lane Linux rapide, così i consumer downstream possono iniziare non appena la build condivisa è pronta.- Successivamente si diramano le lane più pesanti di piattaforma e runtime:
checks-fast-core,checks-fast-extensions,extension-fast,checks,checks-windows,macos-node,macos-swifteandroid.
scripts/ci-changed-scope.mjs ed è coperta da unit test in src/scripts/ci-changed-scope.test.ts.
Il workflow separato install-smoke riutilizza lo stesso script di ambito tramite il proprio job preflight. Calcola run_install_smoke a partire dal segnale changed-smoke più ristretto, quindi lo smoke Docker/install viene eseguito solo per modifiche rilevanti per installazione, packaging e container.
Sui push, la matrice checks aggiunge la lane compat-node22, eseguita solo sui push. Sulle pull request, quella lane viene saltata e la matrice resta focalizzata sulle normali lane di test/canali.
Runner
| Runner | Job |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | preflight, security-fast, build-artifacts, controlli Linux, controlli documentazione, skill Python, android |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos-node, macos-swift |