--- 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.