Dépendance et gouvernance CI/CD

Cette page explique comment PayCal maintient les dépendances JavaScript déterministes et comment les portes CI sont appliquées avant la publication.

Métadonnées de vérification

  • Itinéraire : /transparency/dependency-ci/
  • Dernière vérification :
  • Prochaine révision prévue :
  • Portée de la vérification : Politique de package npm, comportement du fichier de verrouillage, flux de travail GitHub Actions et documentation de la porte de publication.
  • Previous version: Dependency and CI/CD Governance before the June 2026 tooling update

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.

Politique de dépendance npm

PayCal utilise une politique de dépendance lockfile-first pour les outils JavaScript et les vérifications d'automatisation du navigateur.

  • 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.

À quoi sert npm

Objectif Commande Contrôle primaire
Vérifications des peluches et des éviers JavaScript npm run test:js Règles ESLint + vérifications de la politique du récepteur JS
Chèques fumigènes d'un dramaturge npm run test:smoke:ui Comportement des itinéraires au niveau du navigateur et validation de la régression
Vérifications des itinéraires et des politiques d’accessibilité npm run test:a11y:all Suites de tests WCAG, redistribution, contraste et ARIA
Génération de matrice de contraste npm run test:a11y:contrast Vérification de la conformité du contraste au niveau du thème

Modèle de porte CI/CD

PayCal sépare les contrôles de qualité entre les flux de travail afin que les échecs soient explicites et traçables :

  • .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.

Les workflows d'hygiène des versions traitent les portes défaillantes comme des bloqueurs et nécessitent une réexécution après les correctifs.

Limites connues

  • Les pages de transparence publique sont synchronisées manuellement avec les modifications du flux de travail et des packages lors des cycles de publication.
  • Le comportement du pipeline CI est documenté sur plusieurs pages et peut dériver si les mises à jour ne sont pas appliquées de manière cohérente.

Améliorations prévues de la documentation

  • Publiez une matrice de portes canonique mappant chaque tâche CI au propriétaire, au déclencheur, à la commande et à l'état de blocage.
  • Ajoutez un instantané trimestriel de la gouvernance des dépendances comprenant les packages NPM directs, la justification et la cadence de mise à jour.
  • Ajoutez un élément de la liste de contrôle de publication pour confirmer que les documents de gouvernance npm restent alignés sur la politique de flux de travail et de fichier de verrouillage.

Comment vérifier

# 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.