CI-Pipeline

Die CI läuft bei jedem Push auf main und bei jedem Pull Request. Sie nutzt smartes Scoping, um teure Jobs zu überspringen, wenn sich nur nicht betroffene Bereiche geändert haben.

Job-Übersicht

JobZweckWann er läuft
docs-scopeErkennt reine Doku-ÄnderungenImmer
changed-scopeErkennt welche Bereiche sich geändert haben (node/macos/android/windows)Nicht bei reinen Doku-Änderungen
checkTypeScript-Typen, Lint, FormatNicht-Doku, Node-Änderungen
check-docsMarkdown-Lint + Check auf defekte LinksDoku geändert
secretsErkennt geleakte SecretsImmer
build-artifactsBaut dist einmal, teilt es mit release-checkPushes auf main, Node-Änderungen
release-checkValidiert npm-pack-InhaltePushes auf main nach Build
checksNode-Tests + Protokoll-Check bei PRs; Bun-Kompatibilität bei PushNicht-Doku, Node-Änderungen
compat-node22Kompatibilität mit der minimal unterstützten Node-RuntimePushes auf main, Node-Änderungen
checks-windowsWindows-spezifische TestsNicht-Doku, Windows-relevante Änderungen
macosSwift-Lint/Build/Test + TS-TestsPRs mit macOS-Änderungen
androidGradle-Build + TestsNicht-Doku, Android-Änderungen

Fail-Fast-Reihenfolge

Jobs sind so angeordnet, dass günstige Checks fehlschlagen, bevor teure Jobs starten:

  1. docs-scope + changed-scope + check + secrets (parallel, günstige Gates zuerst)
  2. PRs: checks (Linux-Node-Test auf 2 Shards aufgeteilt), checks-windows, macos, android
  3. Pushes auf main: build-artifacts + release-check + Bun-Kompatibilität + compat-node22

Die Scope-Logik liegt in scripts/ci-changed-scope.mjs und wird durch Unit-Tests in src/scripts/ci-changed-scope.test.ts abgedeckt.

Runner

RunnerJobs
blacksmith-16vcpu-ubuntu-2404Die meisten Linux-Jobs, inkl. Scope-Erkennung
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos, ios

Lokale Äquivalente

pnpm check          # Typen + Lint + Format
pnpm test           # Vitest-Tests
pnpm check:docs     # Doku-Format + Lint + defekte Links
pnpm release:check  # npm-pack validieren