prometeu-runtime/discussion/workflow/decisions/DEC-0002-jenkinsfile-strategy.md
bQUARKz 3453494341
Some checks are pending
Test / Build
Intrepid/Prometeu/Runtime/pipeline/head This commit looks good
dev/jenkinsfile (#10)
Reviewed-on: #10
Co-authored-by: bQUARKz <bquarkz@gmail.com>
Co-committed-by: bQUARKz <bquarkz@gmail.com>
2026-04-08 07:39:33 +00:00

1.9 KiB

id discussion title status created resolved tags
DEC-0002 DSC-0019 Decision - Jenkinsfile Location and Strategy accepted 2026-04-07
ci
jenkins

Decision - Jenkinsfile Location and Strategy

Status

Accepted.

Contexto

O arquivo Jenkinsfile estava localizado em files/config/Jenkinsfile, o que dificultava a manutenção e automação via Jenkins (que por padrão busca na raiz). Além disso, o conteúdo estava divergente das definições de CI do Makefile e do GitHub Actions.

Decisao

  1. Mover o Jenkinsfile para a raiz do repositório.
  2. Atualizar o conteúdo do Jenkinsfile para utilizar uma imagem Docker rust:stable (conforme rust-toolchain.toml).
  3. Delegar a execução do pipeline para o comando make ci definido no Makefile.
  4. Remover o arquivo residual em files/config/Jenkinsfile.

Rationale

  • Padronização: Seguir o padrão de mercado de manter o arquivo de configuração de pipeline na raiz.
  • DRY (Don't Repeat Yourself): Ao usar o Makefile, evitamos duplicar os comandos de fmt, clippy e test em múltiplos lugares (Makefile, GHA e Jenkins).
  • Consistência: Garante que o desenvolvedor rodando make ci localmente tenha o mesmo resultado que o servidor de CI.

Invariantes / Contrato

  • O comando make ci deve sempre englobar as verificações mínimas de qualidade (format, clippy, tests).
  • O Jenkinsfile deve sempre usar um ambiente que possua make e rust.

Impactos

  • Jenkins: A configuração do job no Jenkins pode precisar ser atualizada se o "Script Path" estiver explicitamente apontando para files/config/Jenkinsfile. (Geralmente aponta para Jenkinsfile na raiz).
  • Manutenção: Facilita a manutenção, pois mudanças no processo de build só precisam ser feitas no Makefile.

Referencias

  • .github/workflows/ci.yml
  • Makefile
  • rust-toolchain.toml

Propagacao Necessaria

  • N/A.