Aller au contenu

Pipeline CI

La CI s’exécute à chaque push vers main et chaque pull request. Elle utilise un ciblage intelligent pour ignorer les tâches coûteuses lorsque seules des zones non liées ont changé.

TâcheObjectifQuand elle s’exécute
preflightPortée de la documentation, portée des modifications, analyse des clés, audit du workflow, audit des dépendances de productionToujours ; audit basé sur node uniquement pour les modifications hors documentation
docs-scopeDétecter les modifications uniquement dans la documentationToujours
changed-scopeDétecter les zones modifiées (node/macos/android/windows)Modifications hors documentation
checkTypes TypeScript, lint, formatageHors documentation, modifications node
check-docsLint Markdown + vérification des liens brisésDocumentation modifiée
secretsDétecter les secrets divulguésToujours
build-artifactsConstruire dist une fois, partager avec release-checkPushs vers main, modifications node
release-checkValider le contenu du paquet npmPushs vers main après construction
checksTests Node + vérification du protocole sur les PRs ; compatibilité Bun sur les pushsHors documentation, modifications node
compat-node22Compatibilité minimale avec le runtime Node pris en chargePushs vers main, modifications node
checks-windowsTests spécifiques à WindowsHors documentation, modifications pertinentes pour windows
macosLint/build/test Swift + tests TSPRs avec des modifications macos
androidBuild Gradle + testsHors documentation, modifications android

Les tâches sont ordonnées pour que les vérifications peu coûteuses échouent avant l’exécution des plus coûteuses :

  1. docs-scope + changed-scope + check + secrets (parallèle, barrières peu coûteuses d’abord)
  2. PRs : checks (test Node Linux divisé en 2 partitions), checks-windows, macos, android
  3. Pushs vers main : build-artifacts + release-check + compatibilité Bun + compat-node22

La logique de portée réside dans scripts/ci-changed-scope.mjs et est couverte par des tests unitaires dans src/scripts/ci-changed-scope.test.ts. Le même module de portée partagé pilote également le workflow séparé install-smoke via une porte changed-smoke plus étroite, donc les tests de fumée Docker/install ne s’exécutent que pour les modifications liées à l’installation, au packaging et aux conteneurs.

RunnerJobs
blacksmith-16vcpu-ubuntu-2404La plupart des jobs Linux, y compris la détection de portée
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos, ios
Fenêtre de terminal
pnpm check # types + lint + format
pnpm test # vitest tests
pnpm check:docs # docs format + lint + broken links
pnpm release:check # validate npm pack