--- id: AGD-0017 ticket: jenkinsfile-correction title: Agenda - Jenkinsfile Correction and Relocation status: open created: 2026-04-07 resolved: decision: tags: ["ci", "jenkins", "infrastructure"] --- # Agenda - Jenkinsfile Correction and Relocation ## Contexto O projeto possui um `Jenkinsfile` localizado em `files/config/Jenkinsfile`. O conteúdo deste arquivo está básico e utiliza uma versão do Rust (`1.77`) que pode não ser a ideal em comparação com o resto do projeto que usa a versão estável definida em `rust-toolchain.toml`. Além disso, o pipeline de CI principal do projeto está definido no GitHub Actions e o comportamento esperado de CI (formatação, clippy, testes) também está documentado no `Makefile`. ## Problema 1. **Localização Não Convencional**: O `Jenkinsfile` na pasta `files/config/` dificulta a descoberta e manutenção, além de fugir do padrão do Jenkins de buscar o arquivo na raiz do repositório. 2. **Desalinhamento de Comandos**: O `Jenkinsfile` atual executa comandos de forma ligeiramente diferente do `Makefile` e do GitHub Actions (ex: `cargo fmt --all` vs `cargo fmt -- --check`). 3. **Falta de Padronização**: Não há garantias de que o pipeline do Jenkins execute as mesmas verificações de qualidade que o pipeline do GitHub. ## Pontos Críticos - **Sincronia com o Makefile**: O `Jenkinsfile` deve idealmente delegar para o `Makefile` para evitar duplicidade de lógica de comandos. - **Ambiente Docker**: A imagem Docker utilizada deve ser compatível com as ferramentas necessárias (ex: `make`, `cargo`). - **Workspace Completo**: Deve garantir que todas as crates do workspace sejam testadas. ## Opções 1. **Manter como está**: Apenas corrigir o conteúdo no local atual. 2. **Mover para a raiz e atualizar**: Seguir o padrão de mercado movendo para a raiz e alinhando o conteúdo com o `Makefile`. 3. **Remover o Jenkinsfile**: Se o projeto foca apenas no GitHub Actions (como sugere o `dist-workspace.toml`), o Jenkinsfile pode ser redundante. Contudo, a solicitação explícita foi para corrigi-lo. ## Sugestão / Recomendação **Opção 2**: Mover o `Jenkinsfile` para a raiz do projeto e atualizar seu conteúdo para utilizar o comando `make ci` definido no `Makefile`. Isso garante consistência entre o ambiente local, o Jenkins e o GitHub Actions. ## Perguntas em Aberto - Existe alguma restrição técnica no ambiente Jenkins deste projeto que exija o arquivo em `files/config/`? (Assumindo que não, dada a solicitação de "corrigir"). - A imagem Docker `rust:stable` (ou similar) possui as dependências necessárias para rodar o `Makefile`? ## Criterio para Encerrar - O `Jenkinsfile` estar na raiz do projeto. - O conteúdo refletir as mesmas etapas de validação do resto do projeto (fmt, clippy, test). - O arquivo antigo em `files/config/` ter sido removido.