Passer au contenu principal

Pipeline CI

La CI s’exécute à chaque push vers main et sur chaque pull request. Elle utilise une portée intelligente pour ignorer les tâches coûteuses lorsque seules des zones sans lien ont changé.

Vue d’ensemble des tâches

TâcheObjectifQuand elle s’exécute
preflightDétecter les changements docs uniquement, les portées modifiées, les extensions modifiées, et construire le manifeste CIToujours sur les pushs et PR non-brouillons
security-fastDétection de clés privées, audit des workflows via zizmor, audit des dépendances de productionToujours sur les pushs et PR non-brouillons
build-artifactsConstruire dist/ et la Control UI une seule fois, téléverser des artefacts réutilisables pour les tâches en avalChangements pertinents pour Node
checks-fast-coreVoies rapides de validation Linux comme les vérifications bundled/plugin-contract/protocolChangements pertinents pour Node
checks-node-extensionsFragmentation complète des tests de bundled-plugin sur toute la suite d’extensionsChangements pertinents pour Node
checks-node-core-testFragmentation des tests Node du cœur, en excluant les voies channel, bundled, contract et extensionChangements pertinents pour Node
extension-fastTests ciblés uniquement pour les bundled plugins modifiésLorsque des changements d’extension sont détectés
checkPorte locale principale dans la CI : pnpm check plus pnpm build:strict-smokeChangements pertinents pour Node
check-additionalGarde-fous d’architecture, de limites et de cycles d’import, plus le harnais de régression gateway watchChangements pertinents pour Node
build-smokeTests smoke de la CLI construite et smoke de mémoire au démarrageChangements pertinents pour Node
checksVoies Linux Node restantes : tests de channel et compatibilité Node 22 uniquement sur pushChangements pertinents pour Node
check-docsVérifications de formatage, lint et liens cassés de la documentationDocumentation modifiée
skills-pythonRuff + pytest pour les Skills adossées à PythonChangements pertinents pour les Skills Python
checks-windowsVoies de test spécifiques à WindowsChangements pertinents pour Windows
macos-nodeVoie de test TypeScript sur macOS utilisant les artefacts partagés déjà construitsChangements pertinents pour macOS
macos-swiftLint, build et tests Swift pour l’app macOSChangements pertinents pour macOS
androidMatrice de build et de tests AndroidChangements pertinents pour Android

Ordre fail-fast

Les tâches sont ordonnées de sorte que les vérifications peu coûteuses échouent avant le lancement des plus coûteuses :
  1. preflight décide quelles voies existent réellement. La logique docs-scope et changed-scope correspond à des étapes à l’intérieur de cette tâche, pas à des tâches autonomes.
  2. security-fast, check, check-additional, check-docs et skills-python échouent rapidement sans attendre les tâches plus lourdes d’artefacts et de matrice plateforme.
  3. build-artifacts s’exécute en parallèle des voies Linux rapides afin que les consommateurs en aval puissent démarrer dès que le build partagé est prêt.
  4. Les voies plus lourdes de plateforme et d’exécution se déploient ensuite : checks-fast-core, checks-node-extensions, checks-node-core-test, extension-fast, checks, checks-windows, macos-node, macos-swift et android.
La logique de portée se trouve dans scripts/ci-changed-scope.mjs et est couverte par des tests unitaires dans src/scripts/ci-changed-scope.test.ts. Le workflow séparé install-smoke réutilise le même script de portée via sa propre tâche preflight. Il calcule run_install_smoke à partir du signal changed-smoke plus restreint, afin que le smoke Docker/install ne s’exécute que pour les changements pertinents pour l’installation, le packaging et les conteneurs. Sur les pushs, la matrice checks ajoute la voie compat-node22, uniquement sur push. Sur les pull requests, cette voie est ignorée et la matrice reste concentrée sur les voies normales de test/channel.

Exécuteurs

ExécuteurTâches
blacksmith-16vcpu-ubuntu-2404preflight, security-fast, build-artifacts, vérifications Linux, vérifications docs, Skills Python, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

Équivalents locaux

pnpm check          # types + lint + format
pnpm build:strict-smoke
pnpm check:import-cycles
pnpm test:gateway:watch-regression
pnpm test           # tests vitest
pnpm test:channels
pnpm check:docs     # format docs + lint + liens cassés
pnpm build          # construit dist/ lorsque les voies CI artifact/build-smoke sont concernées