Pular para conteúdo

AUR-555 — Workflow liga o SBOM ao Dependency-Track com secrets opcionais

Status

Implementado em .github/workflows/review.yml (ordem dos passos, secrets opcionais). code-review.yml já usa secrets: inherit e continua válido sem mudança; action.yml não é afetado (não declara secrets nem o gate). Prova: cmd/aurumcode/aur555_test.go::TestAUR555*, que lê o workflow como YAML. Aceite: tests/acceptance/AUR-555.sh.

Ordem final e justificativa

  1. SBOM (AUR-549): precisa existir antes do review porque o gate ssor_dtrack (AUR-550) lê o arquivo de quality_gates.ssor_dtrack.sbom_generator.output_file durante o review. O passo roda aurumcode sbom --repo . com cwd no checkout do PR, que resolve output_file dentro desse checkout; o container do review monta o mesmo checkout em /github/workspace (seu cwd), onde SBOMOutputFile() é lido. Nenhuma flag nova.
  2. Review (gate): envia o SBOM ao Dependency-Track e compara métricas. É o único passo com DTRACK_API_KEY/DTRACK_PROJECT_ID no env.
  3. Assinatura (AUR-551): só quando o review terminou com sucesso (success() && steps.review.outcome == 'success') — não se assina um artefato reprovado. Antes (always()) ela rodava mesmo com review reprovado.
  4. Upload do bundle de assinatura (inalterado; if-no-files-found: ignore).

Consequência aceita: o passo de SBOM não é mais always() e sem dependência do review; se ele falhar (digest do Trivy inválido, falha de geração com gate.inconclusive: block), o job falha antes do review. Sem sbom_generator declarado, o comando sai com 0 sem fazer nada e o fluxo é o de antes.

Secrets

DTRACK_API_KEY e DTRACK_PROJECT_ID em workflow_call.secrets, com required: false: os nomes padrão de api_key_secret/project_id_secret. Repasse ao container do review via -e. Sem ssor_dtrack, nada é exigido (AC-004). Com ssor_dtrack e secret ausente, o gate é inconclusivo (dtrack_secret_missing) segundo gate.inconclusive, nunca aprovado (AC-003).

Cobertura

  • AC-001 TestAUR555SBOMStepPrecedesReview
  • AC-002 TestAUR555SecretsOptionalAndScopedToReview
  • AC-003 TestAUR555MissingSecretIsInconclusiveNeverApproved (block e warn; o caso warn também existe em TestAUR550SecretMissingWarnsNeverBlocks, o caso block é novo)
  • AC-004 TestAUR555WorkflowValidWithoutDTrackAndSignsOnlyAfterReview
  • MUT-001: o script move o passo de SBOM para depois do review numa cópia do workflow (AUR555_WORKFLOW) e exige que o teste de AC-001 caia.

Limites

Os testes provam a estrutura do YAML, não a execução no runner do GitHub. Se api_key_secret/project_id_secret forem renomeados, o workflow não repassa os novos nomes (ver docs/configuration.md).