Pular para conteúdo

0013 — CI/CD 100% GitHub Actions (pipeline.yml único)

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-08-31 · Decidido em: 2026-08-31

Contexto

A CI do tradutor rodava em três workflows Forgejo — ci.yml (gate ./gradlew check), docs.yml (publish MkDocs) e release.yml (SemVer ↔ CHANGELOG ↔ tag) — com o gate no container ci-java:25 da fábrica de imagens de CI. A casa migrou o CI de toda a frota para GitHub Actions num pipeline único, aposentou a fábrica (matriz-baseline.json não gateia mais nada) e passou a resolver a toolchain pelas próprias actions. O alvo está fixado na ADR central 0027 — CI/CD em GitHub Actions (emenda a 0003 e à central 0026 de deploy control-plane).

Decisão

Adotar a central 0027: um único .github/workflows/pipeline.yml substitui os três workflows Forgejo, seguindo a variante Java native-canary (o app tem build.targets: [jar, native]). Migração feita em 2026-08-31 (commit 1ab3c2e); o runner Forgejo saiu com has_actions=false.

Consequências

  • Jobs à la carte por docs/app.json build.targets: gate (todo push/PR) · docs (master + tag, slug thoms-webstorm) · build_jar/build_native + deploy (só na tag, via control-plane POST /api/ci/deploy da central [0026]).
  • Toolchain pelas actions (setup-java/setup-gradle) a partir de toolchain.java do app.json — sem container: ci-java:<v> da fábrica (aposentada na constituição 1.1.3). Testcontainers sobem no docker nativo do runner.
  • Gate carrega as guardas estáticas da stack (placeholder aninhado, serde-api, POI-em-native, paridade Dockerfile/Dockerfile.native, reaper de PID1 no ENTRYPOINT, persistência micronaut-data) além do ./gradlew check.
  • Aviso de falha = notificação nativa do GitHub (e-mail); DOCS_S3_* é secret por repo.
  • Os antigos .forgejo/workflows/{ci,docs,release}.yml foram removidos do repo.

Fora de escopo: o motivo e as alternativas da migração de CI (vivem na central 0027); o contrato de deploy control-plane (central 0026).