Contribuer

Pipeline CI

La CI s'exécute à chaque push sur main et à chaque pull request. Elle utilise le smart scoping pour ignorer les jobs coûteux lorsque seuls la documentation ou le code natif ont changé.

Aperçu des jobs

JobObjectifQuand il s'exécute
docs-scopeDétecter les changements uniquement sur la documentationToujours
changed-scopeDétecter quelles zones ont changé (node/macos/android/windows)PRs non-documentation
checkTypes TypeScript, lint, formatPush sur main, ou PRs avec changements pertinents pour Node
check-docsLint Markdown + vérification des liens cassésDocumentation modifiée
code-analysisVérification du seuil de lignes de code (1000 lignes)PRs uniquement
secretsDétecter les secrets divulguésToujours
build-artifactsConstruire dist une fois, partager avec les autres jobsNon-documentation, changements node
release-checkValider le contenu du pack npmAprès la construction
checksTests Node/Bun + vérification du protocoleNon-documentation, changements node
checks-windowsTests spécifiques à WindowsNon-documentation, changements pertinents pour Windows
macosLint/build/test Swift + tests TSPRs avec changements macos
androidConstruction Gradle + testsNon-documentation, changements android

Ordre Fail-Fast

Les jobs sont ordonnés pour que les vérifications peu coûteuses échouent avant que les plus coûteuses ne s'exécutent :

  1. docs-scope + code-analysis + check (parallèles, ~1-2 min)
  2. build-artifacts (bloqué par les précédents)
  3. checks, checks-windows, macos, android (bloqués par la construction)

La logique de scope se trouve dans scripts/ci-changed-scope.mjs et est couverte par les tests unitaires dans src/scripts/ci-changed-scope.test.ts.

Runners

RunnerJobs
blacksmith-16vcpu-ubuntu-2404La plupart des jobs Linux, y compris la détection de scope
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos, ios

Équivalents Locaux

pnpm check          # types + lint + format
pnpm test           # tests vitest
pnpm check:docs     # format + lint docs + liens cassés
pnpm release:check  # valider le pack npm

Workflow de développement PiHubs de documentation