Este documento descreve o pipeline de CI/CD configurado para o projeto Sistema de Gerenciamento de Mensagens Unificado.
O pipeline de build é acionado em:
- Pushes para as branches
mainedevelop - Pull requests para as branches
mainedevelop
Este pipeline executa:
- Setup do ambiente: Configuração de Go, PostgreSQL, MongoDB e Redis
- Instalação de dependências: Download das dependências Go
- Verificação de formatação do código: Garante que o código siga o padrão de formatação Go
- Build: Compila o código para verificar erros de compilação
- Testes: Executa os testes automatizados
O pipeline de deploy é acionado em:
- Pushes para a branch
main - Tags que começam com
v(para releases)
Este pipeline executa:
- Build e Push da imagem Docker: Constrói a imagem Docker do backend e a envia para o GitHub Container Registry
- Deploy para Staging: Para pushes na branch
main, faz deploy automático no ambiente de staging
- Staging: Ambiente de homologação, deploy automático
- Produção: O deploy deve ser feito manualmente usando tags
Para que o pipeline funcione corretamente, os seguintes secrets devem ser configurados nas configurações do repositório GitHub:
STAGING_SERVER_HOST: Endereço IP ou nome do host do servidor de stagingSTAGING_SERVER_USER: Usuário SSH para acesso ao servidor de stagingSTAGING_SSH_PRIVATE_KEY: Chave SSH privada para acesso ao servidor de staging
As seguintes variáveis de ambiente devem ser configuradas no servidor:
POSTGRES_PASSWORD: Senha do banco de dados PostgreSQLJWT_SECRET_KEY: Chave secreta para assinatura de tokens JWT
- Faça push para
mainoudevelop - Abra um Pull Request para
mainoudevelop
- Faça merge na branch
main
- Crie e faça push de uma tag seguindo Semantic Versioning, ex:
v1.0.0