Dependência e Governança CI/CD

Esta página explica como o PayCal mantém as dependências do JavaScript determinísticas e como as portas CI são aplicadas antes do lançamento.

Metadados de verificação

  • Rota: /transparency/dependency-ci/
  • Última verificação:
  • Próxima revisão prevista:
  • Escopo de verificação: política de pacote npm, comportamento do lockfile, fluxos de trabalho do GitHub Actions e documentação do release-gate.
  • 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.

Política de Dependência npm

PayCal usa uma política de dependência lockfile-first para ferramentas JavaScript e verificações de automação do navegador.

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

Para que serve o npm

Objetivo Comando Controle Primário
Verificações de lint e coletor de JavaScript npm run test:js Regras ESLint + verificações de política de coletor JS
Verificações de fumaça do dramaturgo npm run test:smoke:ui Comportamento de rota no nível do navegador e validação de regressão
Rota de acessibilidade e verificações de política npm run test:a11y:all Conjuntos de testes WCAG, refluxo, contraste e ARIA
Geração de matriz de contraste npm run test:a11y:contrast Verificação de conformidade de contraste em nível de tema

Modelo de porta CI/CD

O PayCal separa os controles de qualidade entre os fluxos de trabalho para que as falhas sejam explícitas e rastreáveis:

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

Os fluxos de trabalho de higiene de liberação tratam os portões com falha como bloqueadores e exigem nova execução após as correções.

Limitações conhecidas

  • As páginas de transparência pública são sincronizadas manualmente com fluxo de trabalho e alterações de pacote em ciclos de lançamento.
  • O comportamento do pipeline de CI é documentado em várias páginas e pode variar se as atualizações não forem aplicadas de forma consistente.

Melhorias planejadas na documentação

  • Publique uma matriz de porta canônica mapeando cada trabalho de CI para proprietário, gatilho, comando e status de bloqueio.
  • Adicione um instantâneo trimestral de governança de dependência, incluindo pacotes npm diretos, justificativa e cadência de atualização.
  • Adicione um item da lista de verificação de lançamento para confirmar que os documentos de governança do NPM permanecem alinhados com o fluxo de trabalho e a política de arquivo de bloqueio.

Como verificar

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