Pipeline CI/CD modular e agnóstico a tecnologia para AWS ECS Fargate com GitHub Actions.
Este pipeline oferece uma solução completa de CI/CD composta por 4 workflows reutilizáveis que cobrem todo o ciclo desde build até deploy em produção. Suporta aplicações .NET e Node.js, com deploy automatizado em AWS ECS Fargate, Application Load Balancer para APIs e monitoramento via CloudWatch.
O design modular permite usar apenas os workflows necessários e adaptar facilmente para diferentes tecnologias e arquiteturas. Cada workflow é independente e pode ser customizado via inputs, mantendo as melhores práticas de segurança e escalabilidade.
graph LR
A[📝 Push] --> B[🔨 Build]
B --> C[🧪 Test]
C --> D[🐳 Docker]
D --> E[🚀 Deploy]
subgraph "Outputs"
F[📦 Artifacts]
G[🧪 Coverage]
H[🐳 ECR Image]
I[🚀 ECS Service]
end
B --> F
C --> G
D --> H
E --> I
style A fill:#e3f2fd
style E fill:#e8f5e8
style F fill:#fff3e0
style G fill:#fff3e0
style H fill:#fff3e0
style I fill:#fff3e0
# Copie os workflows para .github/workflows/
cp -r infra-ci-cd/.github/workflows/ .github/
cp -r infra-ci-cd/.github/actions/ .github/
cp -r infra-ci-cd/.github/tech-configs/ .github/Acesse Settings > Environments e crie: dev, qa, sbx, prd
Defina em cada environment:
ECR_REGISTRY,ECS_CLUSTER,SUBNET_IDSetc.- Secrets:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY
name: Deploy
on:
push:
branches: [develop, qa, main]
jobs:
build:
uses: ./.github/workflows/composite-build.yml
with:
technology: dotnet
working_directory: src
test:
uses: ./.github/workflows/composite-test.yml
with:
technology: dotnet
needs: build
docker:
uses: ./.github/workflows/composite-docker.yml
with:
ecr_repo: minha-api
service_type: api
environment: ${{ github.ref_name }}
secrets: inherit
needs: [build, test]
deploy:
uses: ./.github/workflows/composite-deploy.yml
with:
image_uri: ${{ needs.docker.outputs.full_image_uri }}
ecs_service: minha-api-${{ github.ref_name }}
environment: ${{ github.ref_name }}
service_type: api
secrets: inherit
needs: docker
environment: ${{ github.ref_name }}| Workflow | Descrição | Tecnologias | Uso Principal |
|---|---|---|---|
🔨 composite-build |
Compilação multi-tecnologia com cache | .NET, Node.js | Build de aplicações |
🧪 composite-test |
Execução de testes com cobertura | .NET, Node.js | Validação de qualidade |
🐳 composite-docker |
Build e push para ECR | Docker, AWS ECR | Criação de imagens |
🚀 composite-deploy |
Deploy para ECS Fargate + ALB | AWS ECS, ALB | Deploy em produção |
- Workflows: Documentação técnica completa de todos os workflows
- Environments: Configuração de environments, variáveis e secrets
- Diagramas: Visualizações dos fluxos e arquitetura
- Guia de Adaptação: Como adaptar o pipeline para seu projeto
- Workflows compostos independentes
- Reutilização entre projetos
- Customização via inputs
- .NET Core/Framework
- Node.js
- Extensível para outras tecnologias
- ECR para registry de imagens
- ECS Fargate para compute
- ALB para load balancing
- CloudWatch para logs
- Validação automática de inputs
- Secrets management
- Environments com aprovações
- Least privilege principle
- Logs estruturados
- Métricas de deployment
- Health checks automáticos
- Artifacts de debug
- Deploy com Application Load Balancer
- Health checks automáticos
- SSL/TLS termination
- Auto-scaling baseado em métricas
- Processamento assíncrono
- Queue processing
- Scheduled tasks
- Resource optimization
- Frontend + API
- Microservices
- Event-driven architecture
- .NET: 6.0, 7.0, 8.0+
- Node.js: 18, 20, LTS
Contribuições são bem-vindas! Veja nosso exemplo de uso para referência de implementação.
- Crie arquivo em
.github/tech-configs/{tecnologia}.yml - Atualize workflows
composite-build.ymlecomposite-test.yml - Adicione validação em
.github/actions/validate-inputs/ - Documente e teste
- Use o template apropriado
- Inclua logs relevantes
- Descreva ambiente (AWS, GitHub, tecnologia)
💡 Dica: Comece com o Guia de Adaptação para implementar em seu projeto específico.