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

53 lines
1.9 KiB
Markdown

---
id: DEC-0002
discussion: DSC-0019
title: Decision - Jenkinsfile Location and Strategy
status: accepted
created: 2026-04-07
resolved:
tags: ["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.