Abhängigkeit und CI/CD-Governance

Auf dieser Seite wird erläutert, wie PayCal JavaScript-Abhängigkeiten deterministisch hält und wie CI-Gates vor der Veröffentlichung durchgesetzt werden.

Verifizierungsmetadaten

June 2026 CI/CD Tooling Update

This page now links to the complete CI/CD Tooling and Release Governance article. That article documents local hooks, public-health gates, release-ledger promotion, production receipts, and portability work in one place.

npm-Abhängigkeitsrichtlinie

PayCal verwendet eine Lockfile-First-Abhängigkeitsrichtlinie für JavaScript-Tools und Browser-Automatisierungsprüfungen.

  • Install mode for automation: npm ci only (frozen lockfile install).
  • Lockfile source of truth: package-lock.json is required for deterministic CI installs.
  • Declared package manifest: package.json defines lint, smoke, and accessibility command surfaces.
  • Override controls: dependency overrides are declared in package.json to pin selected transitive risk points.

If npm ci reports a mismatch between package.json and package-lock.json, the lockfile is updated intentionally in a dedicated maintenance change before CI reruns.

Wofür wird npm verwendet?

Zweck Befehl Primäre Kontrolle
JavaScript-Lint- und Sink-Prüfungen npm run test:js ESLint-Regeln + JS-Sink-Richtlinienprüfungen
Rauchkontrollen für Dramatiker npm run test:smoke:ui Routenverhalten und Regressionsvalidierung auf Browserebene
Barrierefreiheitsrouten- und Richtlinienprüfungen npm run test:a11y:all WCAG-, Reflow-, Kontrast- und ARIA-Testsuiten
Generierung einer Kontrastmatrix npm run test:a11y:contrast Überprüfung der Kontrastkonformität auf Themenebene

CI/CD-Gate-Modell

PayCal trennt die Qualitätskontrollen über alle Arbeitsabläufe hinweg, sodass Fehler eindeutig und nachvollziehbar sind:

  • .github/workflows/javascript.yml: Node 20 + npm ci + JavaScript quality gates.
  • .github/workflows/phpunit.yml: staged backend validation from fast gate to deep verification and artifacts.
  • .github/workflows/phpstan.yml: strict static analysis with baseline-blocking policy.

Release-Hygiene-Workflows behandeln ausgefallene Gates als Blocker und erfordern nach Korrekturen eine erneute Ausführung.

Bekannte Einschränkungen

  • Öffentliche Transparenzseiten werden manuell mit Workflow- und Paketänderungen in Release-Zyklen synchronisiert.
  • Das Verhalten der CI-Pipeline wird auf mehreren Seiten dokumentiert und kann abweichen, wenn Aktualisierungen nicht konsistent angewendet werden.

Geplante Verbesserungen der Dokumentation

  • Veröffentlichen Sie eine kanonische Gate-Matrix, die jeden CI-Job dem Eigentümer, Auslöser, Befehl und Blockierungsstatus zuordnet.
  • Fügen Sie vierteljährlich einen Snapshot der Abhängigkeitsgovernance hinzu, einschließlich direkter NPM-Pakete, Begründung und Aktualisierungsrhythmus.
  • Fügen Sie ein Release-Checklistenelement hinzu, um zu bestätigen, dass die NPM-Governance-Dokumente weiterhin mit den Workflow- und Sperrdateirichtlinien übereinstimmen.

So überprüfen Sie

# Reproduce JavaScript CI gates locally
npm ci
npm run test:js

# Reproduce broader release-level accessibility gate
npm run test:a11y:all

# Inspect workflow definitions
cat .github/workflows/javascript.yml
cat .github/workflows/phpunit.yml
cat .github/workflows/phpstan.yml

Related transparency pages: CI/CD Tooling and Release Governance, Testing and Validation Governance, and Verification and Governance.