Vai al contenuto principale

Pipeline CI

La CI viene eseguita a ogni push su main e per ogni pull request. Usa uno scoping intelligente per saltare i job costosi quando sono cambiate solo aree non correlate.

Panoramica dei job

JobScopoQuando viene eseguito
preflightRileva modifiche solo alla documentazione, ambiti cambiati, estensioni cambiate e costruisce il manifest CISempre su push e PR non draft
security-fastRilevamento di chiavi private, audit dei workflow tramite zizmor, audit delle dipendenze di produzioneSempre su push e PR non draft
build-artifactsEsegue la build di dist/ e della Control UI una volta, carica artefatti riutilizzabili per i job downstreamModifiche rilevanti per Node
checks-fast-coreLane Linux rapide di correttezza come controlli bundled/plugin-contract/protocolModifiche rilevanti per Node
checks-fast-extensionsAggrega le lane shard delle estensioni dopo il completamento di checks-fast-extensions-shardModifiche rilevanti per Node
extension-fastTest mirati solo per i bundled plugin modificatiQuando vengono rilevate modifiche alle estensioni
checkGate locale principale nella CI: pnpm check più pnpm build:strict-smokeModifiche rilevanti per Node
check-additionalGuardrail di architettura e boundary più l’harness di regressione gateway watchModifiche rilevanti per Node
build-smokeSmoke test della CLI buildata e smoke test della memoria all’avvioModifiche rilevanti per Node
checksLane Linux Node più pesanti: test completi, test dei canali e compatibilità Node 22 solo per pushModifiche rilevanti per Node
check-docsControlli di formattazione, lint e link non funzionanti della documentazioneDocumentazione modificata
skills-pythonRuff + pytest per gli Skills basati su PythonModifiche rilevanti per skill Python
checks-windowsLane di test specifiche per WindowsModifiche rilevanti per Windows
macos-nodeLane di test TypeScript su macOS che usa gli artefatti buildati condivisiModifiche rilevanti per macOS
macos-swiftLint, build e test Swift per l’app macOSModifiche rilevanti per macOS
androidMatrice di build e test AndroidModifiche rilevanti per Android

Ordine fail-fast

I job sono ordinati in modo che i controlli economici falliscano prima che vengano eseguiti quelli più costosi:
  1. preflight decide quali lane esistono del tutto. La logica docs-scope e changed-scope è composta da step interni a questo job, non da job separati.
  2. security-fast, check, check-additional, check-docs e skills-python falliscono rapidamente senza aspettare i job più pesanti della matrice artefatti e piattaforme.
  3. build-artifacts si sovrappone alle lane Linux rapide, così i consumer downstream possono iniziare non appena la build condivisa è pronta.
  4. 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-swift e android.
La logica di ambito si trova in 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

RunnerJob
blacksmith-16vcpu-ubuntu-2404preflight, security-fast, build-artifacts, controlli Linux, controlli documentazione, skill Python, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

Equivalenti locali

pnpm check          # tipi + lint + format
pnpm build:strict-smoke
pnpm test:gateway:watch-regression
pnpm test           # test vitest
pnpm test:channels
pnpm check:docs     # format documentazione + lint + link non funzionanti
pnpm build          # build di dist quando contano le lane CI artifact/build-smoke