-
Notifications
You must be signed in to change notification settings - Fork 0
Description
🚀 Aprimorar Pipeline de CI/CD com Testes, Análise e Estratégia de Deploy
Labels: devops enhancement ci-cd
📌 Contexto
Atualmente, o projeto possui dois workflows básicos no GitHub Actions:
docker-image.yml: Realiza o build do projeto (mvn clean package) e constrói uma imagem Docker a cadapushoupull_requestna branchmaster.maven-publish.yml: Publica o pacote no GitHub Packages quando uma nova release é criada.
Embora funcionais, esses workflows podem ser aprimorados para garantir maior qualidade e confiabilidade do código, além de estabelecer um fluxo completo de Entrega Contínua (CD) para um ambiente de staging ou produção.
🎯 Objetivo
Evoluir o CI/CD atual para um pipeline mais maduro e automatizado, incorporando testes, caching de dependências, publicação de imagens em registro e estratégia de deploy.
📋 Tarefas a Serem Executadas
1. Aprimorar o Workflow de CI (docker-image.yml)
- Executar Testes Unitários
Adicionar etapa para executar os testes antes do build:- name: Run Unit Tests run: mvn -B test --file pom.xml
Adicionar Cache de Dependências Maven
Acelerar o workflow com cache de dependências:
yaml
Copy
Edit
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
Publicar Imagem no GHCR (GitHub Container Registry)
Substituir o build local por publicação em repositório de contêiner:
yaml
Copy
Edit
-
name: Log in to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} -
name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}:${{ github.sha }}
- Criar um Workflow de CD (Continuous Deployment)
Definir um Novo Workflow (deploy.yml)
Responsável por realizar o deploy da imagem Docker publicada.
Escolher o Gatilho (Trigger)
Exemplos:
Push para branch main/master (deploy em staging)
Criação de uma nova release (deploy em produção)
Definir o Ambiente de Deploy
Exemplos de destino:
Google Cloud Run (simples e escalável)
AWS ECS ou EKS (mais robusto)
Servidor VPS via SSH (mais tradicional)
Utilizar GitHub Secrets
Armazenar tokens e chaves de acesso com segurança: GCP_SA_KEY, AWS_ACCESS_KEY_ID, etc.
✅ Critérios de Aceitação
CI executa testes, builda imagem e publica no GHCR a cada push para master.
CD é acionado automaticamente por release e realiza deploy em produção com sucesso.
compose.yaml atualizado para consumir imagem do GHCR.
README.md atualizado com:
Badge de status do workflow
Instruções sobre o novo processo de deploy