Dipendenza e governance CI/CD

Questa pagina spiega come PayCal mantiene deterministiche le dipendenze JavaScript e come vengono applicate le porte CI prima del rilascio.

Metadati di verifica

  • Itinerario: /transparency/dependency-ci/
  • Ultima verifica:
  • Prossima revisione prevista:
  • Ambito di verifica: Policy del pacchetto npm, comportamento del file di lock, flussi di lavoro di GitHub Actions e documentazione del gate di rilascio.
  • 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.

Criteri di dipendenza npm

PayCal utilizza una politica di dipendenza incentrata sul lockfile per gli strumenti JavaScript e i controlli di automazione del browser.

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

A cosa serve npm

Scopo Comando Controllo primario
Controlli JavaScript per lanugine e sink npm run test:js Regole ESLint + controlli della policy sink JS
Controlli di fumo del drammaturgo npm run test:smoke:ui Comportamento del percorso a livello di browser e convalida della regressione
Percorso di accessibilità e controlli delle policy npm run test:a11y:all Suite di test WCAG, ridisposizione, contrasto e ARIA
Generazione della matrice di contrasto npm run test:a11y:contrast Verifica della conformità del contrasto a livello di tema

Modello di porta CI/CD

PayCal separa i controlli di qualità nei flussi di lavoro in modo che i guasti siano espliciti e tracciabili:

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

I flussi di lavoro di igiene del rilascio trattano i gate non riusciti come bloccanti e richiedono una nuova esecuzione dopo le correzioni.

Limitazioni note

  • Le pagine di trasparenza pubblica vengono sincronizzate manualmente con il flusso di lavoro e le modifiche ai pacchetti nei cicli di rilascio.
  • Il comportamento della pipeline CI è documentato in più pagine e può variare se gli aggiornamenti non vengono applicati in modo coerente.

Miglioramenti della documentazione pianificati

  • Pubblica una matrice di gate canonica che associa ogni lavoro CI allo stato di proprietario, trigger, comando e blocco.
  • Aggiungi uno snapshot trimestrale della governance delle dipendenze che include pacchetti npm diretti, logica e cadenza di aggiornamento.
  • Aggiungi un elemento dell'elenco di controllo del rilascio per confermare che i documenti di governance di NPM rimangano allineati al flusso di lavoro e alla policy dei file di blocco.

Come verificare

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