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.jsonbuild.targets:gate(todo push/PR) ·docs(master + tag, slugthoms-webstorm) ·build_jar/build_native+deploy(só na tag, via control-planePOST /api/ci/deployda central [0026]). - Toolchain pelas actions (
setup-java/setup-gradle) a partir detoolchain.javadoapp.json— semcontainer: 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}.ymlforam 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).