CI/CD para projetos Java: configuração do GitHub Actions

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

Introdução ao CI/CD para Projetos Java com GitHub Actions

O desenvolvimento moderno de software é impossível sem a automação dos processos de compilação, teste e implantação. CI/CD (Continuous Integration / Continuous Deployment) é um conjunto de práticas que permite que as equipes entreguem mudanças na produção de forma rápida e segura. Para projetos Java, uma das ferramentas mais convenientes é o GitHub Actions — um sistema CI/CD integrado que não requer a configuração de um servidor separado.

Neste artigo, vamos analisar como configurar um pipeline para uma aplicação Java: desde a compilação e execução de testes até a publicação de artefatos. Você aprenderá a usar Maven, JUnit e GitHub Actions para criar um processo de entrega confiável.



1. Fundamentos do GitHub Actions: estrutura do workflow

O GitHub Actions funciona com base em workflows — arquivos de configuração no formato YAML, armazenados na pasta .github/workflows. Cada workflow consiste em um ou mais jobs, que são executados em máquinas virtuais (runners).

Para um projeto Java, um workflow típico inclui as seguintes etapas:

  • Checkout — clonagem do repositório
  • Setup JDK — instalação da versão necessária do Java
  • Cache — armazenamento em cache das dependências do Maven/Gradle para acelerar a compilação
  • Build & Test — compilação e execução dos testes
  • Deploy — publicação de artefatos (opcional)

Vamos considerar um exemplo básico de configuração para Java 17 e Maven:

name: Java CI with Maven

on: push: branches: [ "main" ] pull_request: branches: [ "main" ]

jobs: build: runs-on: ubuntu-latest

steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: maven

- name: Build with Maven run: mvn -B package --file pom.xml

- name: Run tests run: mvn test

- name: Upload JAR artifact uses: actions/upload-artifact@v4 with: name: app-jar path: target/*.jar

Este workflow é executado a cada push ou pull request no branch main. Ele compila o projeto, executa os testes e salva o arquivo JAR como um artefato.



2. Configuração avançada: teste e qualidade do código

Uma compilação simples é apenas o começo. Em projetos reais, é importante controlar a qualidade do código. Vamos adicionar etapas ao workflow para análise estática e geração de relatórios.

Primeiro, vamos conectar o JaCoCo para medir a cobertura de código pelos testes. Adicione o plugin ao pom.xml:

<plugin>    <groupId>org.jacoco</groupId>    <artifactId>jacoco-maven-plugin</artifactId>    <version>0.8.11</version>    <executions>        <execution>            <goals><goal>prepare-agent</goal></goals>        </execution>        <execution>            <id>report</id>            <phase>test</phase>            <goals><goal>report</goal></goals>        </execution>    </executions></plugin>

Agora, vamos atualizar o workflow, adicionando a verificação de cobertura e a publicação do relatório:

    - name: Run tests with coverage      run: mvn verify

- name: Upload JaCoCo report uses: actions/upload-artifact@v4 with: name: coverage-report path: target/site/jacoco/

Também podemos adicionar o linter Checkstyle ou SpotBugs. Exemplo para Checkstyle:

    - name: Checkstyle      run: mvn checkstyle:check

Essas etapas ajudarão a identificar automaticamente problemas no

Blogs

Book Recommendations