🚀 Processo de Release - CSuite
Versão: 1.0
Última Atualização: 2025-01-02
Responsável: Equipe de DevOps e Desenvolvimento
📋 Índice
- Visão Geral
- Tipos de Release
- Processo de Release
- Checklist de Release
- Rollback Plan
- Comunicação
- Pós-Release
🎯 Visão Geral
Este documento define o processo completo de release para o ecossistema CSuite, garantindo qualidade, rastreabilidade e minimização de riscos.
Princípios
- Qualidade primeiro: Não comprometer qualidade por velocidade
- Testes obrigatórios: Tudo deve ser testado antes de produção
- Rollback sempre possível: Sempre ter plano de rollback
- Comunicação clara: Informar stakeholders sobre releases
- Documentação: Documentar todas as mudanças
📦 Tipos de Release
Hotfix (PATCH)
Quando usar:
- Correção crítica de bug
- Correção de segurança
- Correção de dados
Processo:
- Branch: hotfix/v1.1.1
- Testes: Focados no fix
- Deploy: Imediato após validação
- Documentação: Atualizar CHANGELOG
Exemplo:
# Versão: 1.1.0 → 1.1.1
git checkout -b hotfix/v1.1.1
# Fix aplicado
git tag v1.1.1
Release Menor (MINOR)
Quando usar:
- Novas funcionalidades compatíveis
- Melhorias não-breaking
- Novos endpoints opcionais
Processo:
- Branch: release/v1.2.0
- Testes: Completos (unit + integration)
- Deploy: Após aprovação
- Documentação: Atualizar docs + CHANGELOG
Exemplo:
# Versão: 1.1.0 → 1.2.0
git checkout -b release/v1.2.0
# Features implementadas
git tag v1.2.0
Release Maior (MAJOR)
Quando usar:
- Breaking changes
- Mudanças arquiteturais significativas
- Remoção de funcionalidades
Processo:
- Branch: release/v2.0.0
- Testes: Extensivos + migração
- Deploy: Com janela de manutenção
- Documentação: Guia de migração completo
Exemplo:
# Versão: 1.1.0 → 2.0.0
git checkout -b release/v2.0.0
# Breaking changes implementados
git tag v2.0.0
🔄 Processo de Release
Fase 1: Planejamento
Atividades:
1. Identificar mudanças:
- Revisar PRs merged
- Listar features/bugs
- Classificar como MAJOR/MINOR/PATCH
- Decidir versão:
- Seguir VERSIONING_STRATEGY.md
-
Determinar número de versão
-
Planejar release:
- Data/hora de release
- Janela de manutenção (se necessário)
- Equipe envolvida
- Rollback plan
Output:
- Release notes draft
- Checklist de release
- Plano de rollback
Fase 2: Preparação
Atividades:
1. Criar branch de release:
bash
git checkout -b release/v1.2.0
- Atualizar versões:
- Versão no código (se aplicável)
- Versão em docker-stack.yml
-
Versão em documentação
-
Atualizar CHANGELOG.md:
- Adicionar seção para nova versão
- Listar todas as mudanças
-
Categorizar (Added, Changed, Fixed, etc.)
-
Atualizar documentação:
- Atualizar docs afetados
- Criar guias de migração (se MAJOR)
- Atualizar README se necessário
Checklist:
- [ ] Branch de release criada
- [ ] Versões atualizadas
- [ ] CHANGELOG.md atualizado
- [ ] Documentação atualizada
- [ ] Release notes preparadas
Fase 3: Testes
Atividades:
1. Testes Unitários:
bash
pytest tests/unit/
-
Testes de Integração:
bash pytest tests/integration/ -
Testes de Compatibilidade:
- Verificar backward compatibility (se MINOR/PATCH)
-
Testar migrações (se MAJOR)
-
Testes de Performance:
- Verificar regressões de performance
-
Testar carga (se aplicável)
-
Testes Manuais:
- Smoke tests
- Testes de funcionalidades críticas
- Testes de UI (se aplicável)
Checklist:
- [ ] Todos os testes passando
- [ ] Cobertura de testes mantida/aumentada
- [ ] Testes de compatibilidade (se aplicável)
- [ ] Performance validada
- [ ] Smoke tests passando
Fase 4: Build e Deploy em Staging
Atividades:
1. Build das imagens:
bash
docker build -t csuite-service:v1.2.0 .
-
Tag das imagens:
bash docker tag csuite-service:v1.2.0 registry/csuite-service:v1.2.0 -
Deploy em staging:
bash docker stack deploy -c docker-stack.yml csuite-staging -
Validação em staging:
- Health checks
- Smoke tests
- Testes de funcionalidades
- Verificar logs
Checklist:
- [ ] Imagens buildadas e taggeadas
- [ ] Deploy em staging bem-sucedido
- [ ] Health checks passando
- [ ] Smoke tests passando
- [ ] Logs sem erros críticos
Fase 5: Aprovação
Atividades:
1. Code Review:
- Revisar mudanças no branch de release
- Aprovar se tudo OK
- Aprovação de Release:
- Product Owner aprova features
- Tech Lead aprova mudanças técnicas
-
DevOps aprova processo de deploy
-
Comunicação:
- Notificar stakeholders sobre release
- Agendar janela de manutenção (se necessário)
Checklist:
- [ ] Code review aprovado
- [ ] Product Owner aprovou
- [ ] Tech Lead aprovou
- [ ] DevOps aprovou
- [ ] Stakeholders notificados
Fase 6: Deploy em Produção
Atividades:
1. Backup:
```bash
# Backup de bancos de dados
./scripts/backup_all.sh
# Backup de configurações
git tag backup-pre-v1.2.0
```
- Deploy:
```bash
# Merge para main
git checkout main
git merge release/v1.2.0
# Criar tag
git tag v1.2.0
git push origin main --tags
# Deploy
docker stack deploy -c docker-stack.yml csuite
```
- Monitoramento:
- Monitorar health checks
- Monitorar logs
- Monitorar métricas
- Verificar erros
Checklist:
- [ ] Backup realizado
- [ ] Tag criada e pushed
- [ ] Deploy executado
- [ ] Health checks passando
- [ ] Logs sem erros críticos
- [ ] Métricas normais
Fase 7: Validação Pós-Deploy
Atividades:
1. Validação Imediata (5-10 min):
- Health checks de todos os serviços
- Smoke tests críticos
- Verificar logs de erro
- Validação Estendida (30-60 min):
- Testes de funcionalidades principais
- Verificar métricas de performance
-
Verificar integrações
-
Monitoramento Contínuo (24h):
- Monitorar métricas
- Verificar alertas
- Coletar feedback
Checklist:
- [ ] Health checks OK
- [ ] Smoke tests passando
- [ ] Funcionalidades principais OK
- [ ] Performance normal
- [ ] Sem alertas críticos
✅ Checklist de Release
Pré-Release
- [ ] Mudanças identificadas e classificadas
- [ ] Versão decidida
- [ ] Branch de release criada
- [ ] CHANGELOG.md atualizado
- [ ] Documentação atualizada
- [ ] Testes passando
- [ ] Code review aprovado
- [ ] Aprovação de release obtida
Deploy
- [ ] Backup realizado
- [ ] Tag criada
- [ ] Deploy em staging validado
- [ ] Deploy em produção executado
- [ ] Health checks passando
- [ ] Logs verificados
Pós-Release
- [ ] Validação pós-deploy OK
- [ ] Monitoramento ativo
- [ ] Release notes publicadas
- [ ] Stakeholders notificados
- [ ] Documentação atualizada (se necessário)
🔙 Rollback Plan
Quando Fazer Rollback
Indicadores:
- Health checks falhando após deploy
- Erros críticos em logs
- Degradação significativa de performance
- Perda de dados
- Vulnerabilidade de segurança introduzida
Procedimento de Rollback
1. Decisão:
- Avaliar impacto
- Decidir: rollback imediato ou investigação
- Para P1: rollback imediato
2. Rollback:
# Reverter para versão anterior
git checkout v1.1.0
git tag rollback-v1.2.0-to-v1.1.0
# Deploy da versão anterior
docker stack deploy -c docker-stack.yml csuite
3. Validação:
- Verificar health checks
- Verificar funcionalidades críticas
- Verificar dados
4. Comunicação:
- Notificar stakeholders
- Documentar rollback
- Investigar causa
Mais informações: RUNBOOKS_OPERACIONAIS.md
📢 Comunicação
Antes do Release
Stakeholders a notificar:
- Equipe de desenvolvimento
- Product Owners
- Usuários (se breaking changes)
Conteúdo:
- Data/hora do release
- Mudanças principais
- Impacto esperado
- Janela de manutenção (se aplicável)
Durante o Release
Canais:
- Slack: #csuite-releases
- Status page: (se implementado)
Conteúdo:
- Status do deploy
- Progresso
- Problemas encontrados
Após o Release
Conteúdo:
- Release concluído
- Mudanças disponíveis
- Links para documentação
- Como reportar problemas
Template:
🚀 Release v1.2.0 Concluído
✅ Deploy realizado com sucesso
📝 Mudanças principais:
- Feature X
- Bug fix Y
- Melhoria Z
📚 Documentação: [link]
🐛 Problemas? Reporte em: [link]
📊 Pós-Release
Monitoramento (24-48h)
Métricas a monitorar:
- Taxa de erro
- Latência
- Throughput
- Health checks
- Alertas
Ações:
- Revisar logs diariamente
- Verificar métricas
- Coletar feedback
- Responder a problemas
Retrospectiva
Após 1 semana:
- Revisar processo de release
- Identificar melhorias
- Documentar lições aprendidas
- Atualizar processo se necessário
Perguntas:
- O que funcionou bem?
- O que pode ser melhorado?
- Houve problemas? Como evitar?
- Processo foi seguido?
📝 Release Notes Template
# Release v1.2.0 - [Data]
## 🎉 Novas Funcionalidades
- Feature 1
- Feature 2
## 🔧 Melhorias
- Melhoria 1
- Melhoria 2
## 🐛 Correções
- Bug fix 1
- Bug fix 2
## 🔒 Segurança
- Security fix 1
## ⚠️ Breaking Changes
- Breaking change 1 (com guia de migração)
## 📚 Documentação
- Doc atualizado 1
- Doc atualizado 2
## 🔗 Links
- [CHANGELOG.md](../strategic/CHANGELOG.md)
- [Guia de Migração](./MIGRATION_GUIDE_v1.2.0.md)
🔗 Documentos Relacionados
- VERSIONING_STRATEGY.md - Estratégia de versionamento
- CHANGELOG.md - Histórico de mudanças
- RUNBOOKS_OPERACIONAIS.md - Runbooks operacionais
- DISASTER_RECOVERY.md - Plano de recuperação
Última Revisão: 2025-01-02
Próxima Revisão: 2025-04-02 (trimestral)
Aprovado por: [Nome do aprovador]