Este repositório contém três pipelines principais para CI/CD:
- Checkout: Baixa o código do repositório
- Dependency Check: Usa OWASP Dependency Check para verificar vulnerabilidades em dependências
- SonarQube Quality Gate: Executa análise de qualidade de código
- SAST: Análise estática de segurança usando Semgrep e CodeQL
- Push para branches
mainoudevelop - Pull requests para branch
main - Execução manual com opções para:
- Executar scan completo de segurança
- Pular execução de testes
- Prebuild: Validação e geração de versão
- Build: Empacotamento da aplicação
- Docker Image Creation: Criação e push da imagem Docker
- Image Registration: Registro no Azure Container Registry
- Deploy: Deploy para staging e produção no Azure
- Após conclusão bem-sucedida da pipeline de CI
- Execução manual com opções para:
- Seleção de ambiente (staging, production, both)
- Forçar deploy mesmo se CI falhar
- Pular testes pré-deploy
- Integration Tests: Testes de integração contra ambiente de staging
- DAST: Testes de segurança dinâmica usando OWASP ZAP e Nuclei
- E2E Tests: Testes end-to-end usando Playwright
- Release Management: Criação de releases e promoção para produção
- Após conclusão da pipeline de CD
- Execução manual com opções para:
- Tipo de teste (all, integration, dast, e2e, security-only)
- Ambiente alvo (staging, production)
- Pular testes de performance
- Controlar criação de release
- Agendamento diário para DAST
Configure os seguintes secrets no repositório:
AZURE_CREDENTIALS # Service Principal JSON para autenticação no Azure
AZURE_ACR_USERNAME # Username do Azure Container Registry
AZURE_ACR_PASSWORD # Password do Azure Container Registry
SONAR_TOKEN # Token de autenticação do SonarQube
SONAR_HOST_URL # URL do servidor SonarQube
SEMGREP_APP_TOKEN # Token do Semgrep (opcional)
NVD_API_KEY # API Key do NIST NVD para Dependency Check
GITHUB_TOKEN # Token do GitHub (geralmente disponível automaticamente)
As seguintes variáveis são configuradas nos workflows:
REGISTRY: vulnapp67acr.azurecr.ioIMAGE_NAME: vulnapp67AZURE_WEBAPP_NAME: vulnapp67AZURE_RESOURCE_GROUP: az-vuln-app
- Criar Service Principal:
az ad sp create-for-rbac --name "github-actions-sp" --role contributor \
--scopes /subscriptions/{subscription-id}/resourceGroups/az-vuln-app \
--sdk-auth- Configurar Azure Container Registry:
az acr create --resource-group az-vuln-app --name vulnapp67acr --sku Basic
az acr update -n vulnapp67acr --admin-enabled true- Criar Azure Web Apps:
# Staging
az webapp create --resource-group az-vuln-app --plan vulnapp67plan \
--name vulnapp67-staging --deployment-container-image-name vulnapp67acr.azurecr.io/vulnapp67:latest
# Production
az webapp create --resource-group az-vuln-app --plan vulnapp67plan \
--name vulnapp67 --deployment-container-image-name vulnapp67acr.azurecr.io/vulnapp67:latestConfigure os seguintes ambientes no GitHub:
- staging: Para deploys de staging
- production: Para deploys de produção (com aprovação manual recomendada)
.github/
└── workflows/
├── ci-pipeline.yml # Pipeline de CI
├── cd-pipeline.yml # Pipeline de CD
└── testing-release-pipeline.yml # Pipeline de Testing e Release
- Desenvolvedor faz push ou cria PR
- CI Pipeline executa:
- Testes unitários
- Dependency check
- SAST (Semgrep, CodeQL)
- SonarQube quality gate
- CD Pipeline executa (se CI passar):
- Build da aplicação
- Criação da imagem Docker
- Deploy para staging
- Deploy para produção (se aprovado)
- Testing Pipeline executa (após CD):
- Testes de integração
- DAST security tests
- E2E tests
- Release management
- Artifacts: Todos os relatórios são salvos como artifacts
- SARIF: Resultados de segurança são enviados para o GitHub Security tab
- Releases: Releases automáticos são criados após deploys bem-sucedidos
- Notificações: Status é reportado via GitHub checks
Para adaptar as pipelines ao seu ambiente:
- Atualize as variáveis de ambiente nos workflows
- Configure os secrets necessários
- Ajuste os nomes dos recursos Azure
- Modifique os testes conforme necessário
- Configure as regras de aprovação nos ambientes