Pipeline CI/CD para Java: configuração do zero para não ter medo do deploy

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Você ainda faz deploy de aplicação Java via SSH?

\n\n

Se você já configurou um projeto Java em produção manualmente — mvn clean install, scp para o servidor, matar o processo, reiniciar — você conhece aquele sentimento: parece que tudo funciona, mas cada deploy é como uma batalha contra um chefe. Uma flag esquecida, uma versão errada do Java — e a aplicação cai, enquanto você recebe a mensagem "Servidor não responde" às 3 da manhã.

\n\n

Hoje vamos ver como construir um pipeline CI/CD para Java do zero. Não importa se você usa Spring Boot, Micronaut ou o bom e velho Java EE — este pipeline vai salvar seus nervos e seu tempo. Usaremos Jenkins, Maven, Docker e GitHub. Tudo será real: com código, configurações e exemplos práticos.

\n\n
\n\n

O que é CI/CD e por que um desenvolvedor Java precisa disso?

\n\n

CI/CD (Integração Contínua / Entrega Contínua) não é apenas uma palavra da moda. É um processo que transforma seu código de "escrito de qualquer jeito" para "funciona de forma estável no servidor" sem a sua intervenção.

\n\n
    \n
  • Integração Contínua — cada commit seu é automaticamente compilado e testado. Se os testes falharem, você fica sabendo na hora, e não uma semana depois.
  • \n
  • Entrega Contínua — após a compilação bem-sucedida, o código é automaticamente implantado em um servidor de teste ou produção.
  • \n
\n\n

Para Java, isso é especialmente importante: compilação com Maven/Gradle, execução de testes unitários, testes de integração, verificação de estilo de código — tudo isso pode e deve ser automatizado. Caso contrário, você perderá horas com tarefas repetitivas em vez de escrever funcionalidades.

\n\n
\n\n

Passo 1. Preparação do ambiente: o que vamos precisar

\n\n

Antes de escrever o pipeline, vamos garantir que temos todas as ferramentas. Para o nosso pipeline CI/CD para Java, precisaremos de:

\n\n
    \n
  • GitHub (ou GitLab/Bitbucket) — repositório com o código.
  • \n
  • Jenkins — servidor de automação. Pode ser configurado localmente ou em um VPS.
  • \n
  • Maven — compilador do projeto Java.
  • \n
  • Docker — para conteinerização da aplicação.
  • \n
  • Servidor (ou nuvem) — onde faremos o deploy.
  • \n
\n\n

Vamos instalar o Jenkins no Ubuntu (se você tiver outro SO — não tem problema, o princípio é o mesmo):

\n\n
sudo apt update\nsudo apt install openjdk-11-jdk\nwget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -\nsudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'\nsudo apt update\nsudo apt install jenkins\nsudo systemctl start jenkins\n
\n\n

Após a instalação, acesse http://seu-servidor:8080 e faça a configuração inicial. Não se esqueça de instalar os plugins: Git, Maven Integration, Docker Pipeline, Blue Ocean (para uma interface bonita).

\n\n
\n\n

Passo 2. Escrevendo um projeto Java simples (Spring Boot)

\n\n

Para termos algo para praticar, vamos criar um serviço Spring Boot mínimo. Se você já tem um projeto — apenas pule esta etapa.

\n\n
// Main.java\npackage com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@SpringBootApplication\n@RestController\npublic class DemoApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(DemoApplication.class, args);\n    }\n\n    @GetMapping("/")\n    public String hello() {\n        return "Hello from CI/CD pipeline!";\n    }\n}\n
\n\n

Não se esqueça do pom.xml com as dependências. Um Spring Boot starter comum + plugin Maven compiler. Este será nosso cobaia.

\n\n
\n\n

Passo 3. Criando o Jenkinsfile — o coração do pipeline

\n\n

Jenkinsfile é a

Blogs

Book Recommendations