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
preflightRilevare modifiche solo alla documentazione, ambiti modificati, estensioni modificate e costruire il manifest CISempre su push e PR non in bozza
security-fastRilevamento di chiavi private, audit dei workflow tramite zizmor, audit delle dipendenze di produzioneSempre su push e PR non in bozza
build-artifactsEseguire la build di dist/ e della Control UI una volta, caricare artifact riutilizzabili per i job downstreamModifiche rilevanti per Node
checks-fast-coreCorsie Linux rapide di correttezza come controlli bundled/plugin-contract/protocolModifiche rilevanti per Node
checks-node-extensionsShard completi dei test dei bundled plugin sull’intera suite di estensioniModifiche rilevanti per Node
checks-node-core-testShard dei test core Node, escluse le corsie channel, bundled, contract ed extensionModifiche 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, boundary e cicli di import più l’harness di regressione del watch del gatewayModifiche rilevanti per Node
build-smokeTest smoke della CLI buildata e smoke della memoria all’avvioModifiche rilevanti per Node
checksRestanti corsie Linux Node: test dei channel e compatibilità Node 22 solo su pushModifiche rilevanti per Node
check-docsControlli di formattazione, lint e link rotti della documentazioneDocumentazione modificata
skills-pythonRuff + pytest per le Skills basate su PythonModifiche rilevanti per le Skills Python
checks-windowsCorsie di test specifiche per WindowsModifiche rilevanti per Windows
macos-nodeCorsia di test TypeScript su macOS che usa gli artifact 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 costosi:
  1. preflight decide quali corsie esistono davvero. La logica docs-scope e changed-scope è costituita 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 artifact e piattaforme.
  3. build-artifacts si sovrappone alle corsie Linux rapide, così i consumer downstream possono iniziare non appena la build condivisa è pronta.
  4. Le corsie più pesanti di piattaforma e runtime si distribuiscono dopo: checks-fast-core, checks-node-extensions, checks-node-core-test, 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 riusa lo stesso script di ambito tramite il proprio job preflight. Calcola run_install_smoke 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 corsia compat-node22 solo per i push. Sulle pull request, quella corsia viene saltata e la matrice resta concentrata sulle normali corsie di test/channel.

Runner

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

Equivalenti locali

pnpm check          # tipi + lint + formattazione
pnpm build:strict-smoke
pnpm check:import-cycles
pnpm test:gateway:watch-regression
pnpm test           # test vitest
pnpm test:channels
pnpm check:docs     # formattazione docs + lint + link rotti
pnpm build          # build di dist quando sono rilevanti le corsie CI artifact/build-smoke