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
| Job | Zweck | Wann er läuft |
|---|---|---|
docs-scope | Erkennt reine Doku-Änderungen | Immer |
changed-scope | Erkennt welche Bereiche sich geändert haben (node/macos/android/windows) | Nicht bei reinen Doku-Änderungen |
check | TypeScript-Typen, Lint, Format | Nicht-Doku, Node-Änderungen |
check-docs | Markdown-Lint + Check auf defekte Links | Doku geändert |
secrets | Erkennt geleakte Secrets | Immer |
build-artifacts | Baut dist einmal, teilt es mit release-check | Pushes auf main, Node-Änderungen |
release-check | Validiert npm-pack-Inhalte | Pushes auf main nach Build |
checks | Node-Tests + Protokoll-Check bei PRs; Bun-Kompatibilität bei Push | Nicht-Doku, Node-Änderungen |
compat-node22 | Kompatibilität mit der minimal unterstützten Node-Runtime | Pushes auf main, Node-Änderungen |
checks-windows | Windows-spezifische Tests | Nicht-Doku, Windows-relevante Änderungen |
macos | Swift-Lint/Build/Test + TS-Tests | PRs mit macOS-Änderungen |
android | Gradle-Build + Tests | Nicht-Doku, Android-Änderungen |
Fail-Fast-Reihenfolge
Jobs sind so angeordnet, dass günstige Checks fehlschlagen, bevor teure Jobs starten:
docs-scope+changed-scope+check+secrets(parallel, günstige Gates zuerst)- PRs:
checks(Linux-Node-Test auf 2 Shards aufgeteilt),checks-windows,macos,android - 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
| Runner | Jobs |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | Die meisten Linux-Jobs, inkl. Scope-Erkennung |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos, 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