Zum Hauptinhalt springen

CI-Pipeline

Die CI läuft bei jedem Push nach main und bei jedem Pull Request. Sie verwendet intelligentes Scoping, um teure Jobs zu überspringen, wenn sich nur nicht zusammenhängende Bereiche geändert haben.

Job-Überblick

JobZweckWann er läuft
preflightErkennt reine Doku-Änderungen, geänderte Scopes, geänderte Erweiterungen und erstellt das CI-ManifestImmer bei Nicht-Entwurf-Pushes und PRs
security-fastErkennung privater Schlüssel, Workflow-Audit über zizmor, Audit von ProduktionsabhängigkeitenImmer bei Nicht-Entwurf-Pushes und PRs
build-artifactsBaut dist/ und die Control UI einmal und lädt wiederverwendbare Artefakte für nachgelagerte Jobs hochNode-relevante Änderungen
checks-fast-coreSchnelle Linux-Korrektheits-Lanes wie Prüfungen für gebündelte/plugin-contract/protocolNode-relevante Änderungen
checks-node-extensionsVollständige Test-Shards für gebündelte Plugins über die Erweiterungssuite hinwegNode-relevante Änderungen
checks-node-core-testCore-Node-Test-Shards, ohne Channel-, gebündelte, Contract- und Erweiterungs-LanesNode-relevante Änderungen
extension-fastFokussierte Tests nur für die geänderten gebündelten PluginsWenn Erweiterungsänderungen erkannt werden
checkWichtigstes lokales Gate in CI: pnpm check plus pnpm build:strict-smokeNode-relevante Änderungen
check-additionalArchitektur-, Boundary- und Importzyklus-Schutzmaßnahmen plus der Gateway-Watch-Regression-HarnessNode-relevante Änderungen
build-smokeSmoke-Tests für die gebaute CLI und Startup-Speicher-SmokeNode-relevante Änderungen
checksVerbleibende Linux-Node-Lanes: Channel-Tests und die nur bei Pushes laufende Node-22-KompatibilitätNode-relevante Änderungen
check-docsDoku-Formatierung, Linting und Broken-Link-PrüfungenWenn sich Doku geändert hat
skills-pythonRuff + pytest für Python-basierte SkillsPython-Skill-relevante Änderungen
checks-windowsWindows-spezifische Test-LanesWindows-relevante Änderungen
macos-nodemacOS-TypeScript-Test-Lane mit den gemeinsam genutzten Build-ArtefaktenmacOS-relevante Änderungen
macos-swiftSwift-Linting, Build und Tests für die macOS-AppmacOS-relevante Änderungen
androidAndroid-Build- und Test-MatrixAndroid-relevante Änderungen

Fail-Fast-Reihenfolge

Die Jobs sind so angeordnet, dass günstige Prüfungen fehlschlagen, bevor teurere Jobs laufen:
  1. preflight entscheidet, welche Lanes überhaupt existieren. Die Logik docs-scope und changed-scope sind Schritte innerhalb dieses Jobs, keine eigenständigen Jobs.
  2. security-fast, check, check-additional, check-docs und skills-python schlagen schnell fehl, ohne auf die schwereren Artefakt- und Plattform-Matrix-Jobs zu warten.
  3. build-artifacts überschneidet sich mit den schnellen Linux-Lanes, damit nachgelagerte Consumer starten können, sobald der gemeinsame Build bereit ist.
  4. Danach verzweigen die schwereren Plattform- und Runtime-Lanes: checks-fast-core, checks-node-extensions, checks-node-core-test, extension-fast, checks, checks-windows, macos-node, macos-swift und android.
Die Scope-Logik befindet sich in scripts/ci-changed-scope.mjs und wird durch Unit-Tests in src/scripts/ci-changed-scope.test.ts abgedeckt. Der separate Workflow install-smoke verwendet dasselbe Scope-Skript über seinen eigenen Job preflight wieder. Er berechnet run_install_smoke aus dem engeren Signal changed-smoke, sodass Docker-/Install-Smoke nur bei install-, packaging- und container-relevanten Änderungen läuft. Bei Pushes ergänzt die Matrix checks die nur bei Pushes laufende Lane compat-node22. Bei Pull Requests wird diese Lane übersprungen, und die Matrix bleibt auf die normalen Test-/Channel-Lanes fokussiert.

Runner

RunnerJobs
blacksmith-16vcpu-ubuntu-2404preflight, security-fast, build-artifacts, Linux-Prüfungen, Doku-Prüfungen, Python-Skills, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

Lokale Äquivalente

pnpm check          # Typen + Lint + Format
pnpm build:strict-smoke
pnpm check:import-cycles
pnpm test:gateway:watch-regression
pnpm test           # Vitest-Tests
pnpm test:channels
pnpm check:docs     # Doku-Format + Lint + Broken Links
pnpm build          # baut dist, wenn die CI-Artefakt-/build-smoke-Lanes relevant sind