Reviewed-on: #10 Co-authored-by: bQUARKz <bquarkz@gmail.com> Co-committed-by: bQUARKz <bquarkz@gmail.com>
53 lines
1.9 KiB
Markdown
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.
|