Merge pull request #25 from AgroCore-co/dev #15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy BUFFS API to AWS EC2 | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout código | |
| uses: actions/checkout@v4 | |
| - name: Criar pacote para deploy | |
| run: | | |
| tar -czf deploy.tar.gz \ | |
| --exclude='.git' \ | |
| --exclude='node_modules' \ | |
| --exclude='.env' \ | |
| --exclude='dist' \ | |
| --exclude='coverage' \ | |
| --exclude='logs' \ | |
| . | |
| - name: Copiar pacote para EC2 | |
| uses: appleboy/scp-action@v0.1.7 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ec2-user | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| port: 22 | |
| source: 'deploy.tar.gz' | |
| target: '/home/ec2-user/' | |
| - name: Deploy via Docker Compose | |
| uses: appleboy/ssh-action@v1.0.3 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ec2-user | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| port: 22 | |
| script: | | |
| set -e | |
| cd /home/ec2-user | |
| # Garantir que o Docker está rodando | |
| sudo systemctl start docker 2>/dev/null || true | |
| # Backup do .env | |
| if [ -f buffs-api/.env ]; then | |
| cp buffs-api/.env /tmp/.env.backup | |
| fi | |
| # Limpar e recriar diretório (preserva .env) | |
| rm -rf buffs-api | |
| mkdir -p buffs-api | |
| # Extrair código-fonte | |
| tar -xzf deploy.tar.gz -C buffs-api/ | |
| rm deploy.tar.gz | |
| # Restaurar .env | |
| if [ -f /tmp/.env.backup ]; then | |
| mv /tmp/.env.backup buffs-api/.env | |
| fi | |
| cd buffs-api | |
| # Verificar .env obrigatório | |
| [ ! -f .env ] && echo "ERRO: .env não encontrado na EC2" && exit 1 | |
| # Parar containers antigos (se existirem) | |
| docker compose -f infra/docker-compose.prod.yml down --remove-orphans 2>/dev/null || true | |
| # Build e subir todos os serviços | |
| docker compose -f infra/docker-compose.prod.yml up -d --build | |
| # Limpar imagens antigas não utilizadas | |
| docker image prune -f | |
| # Aguardar a API inicializar | |
| echo "Aguardando API inicializar..." | |
| sleep 15 | |
| # Health check | |
| curl -f http://localhost:3001/health || (docker compose -f infra/docker-compose.prod.yml logs buffs-api && exit 1) | |
| echo "✅ Deploy concluído com sucesso!" |