diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 6e3e714..8cc824e 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -96,17 +96,46 @@ jobs: exit 0 fi - - name: 6. Production Deployment - # MANTIDO: O deploy para a Produção SÓ pode acontecer num push/merge direto para a main! + - name: 6.1. Enviar Relatório ZAP para o Servidor (SCP) if: github.event_name == 'push' - run: | - docker rm -f portal-corporativo || true - docker run -d -p 3000:3000 --name portal-corporativo apex-solutions:latest - sleep 5 - docker cp qatests/report.html portal-corporativo:/usr/src/app/frontend/zap-report.html || true + uses: appleboy/scp-action@master + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USER }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + source: "qatests/report.html" + target: "/tmp" + + - name: 6.2. Deploy em Produção (SSH) + if: github.event_name == 'push' + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USER }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + script: | + echo ">>> 1. A navegar para a pasta do projeto no servidor..." + cd /storage/docker/website-secure + + echo ">>> 2. A transferir o código aprovado (git pull)..." + git pull origin main + + echo ">>> 3. A compilar a imagem Docker de Produção..." + # Compilamos a imagem com a tag :prod para ficar bem identificada + docker build -f backend/Dockerfile -t apex-solutions:prod . + + echo ">>> 4. A substituir o contentor em execução..." + # Removemos o contentor antigo e subimos o novo na porta 3000 + docker rm -f portal-corporativo || true + docker run -d -p 3000:3000 --name portal-corporativo --restart unless-stopped apex-solutions:prod + + echo ">>> 5. A publicar o relatório de segurança transparente..." + sleep 5 + docker cp /tmp/qatests/report.html portal-corporativo:/usr/src/app/frontend/zap-report.html || true + + echo "✅ Deploy concluído com sucesso! A aplicação está no ar." - name: 7. Archive ZAP Report - # ALTERADO: Usamos apenas always(). Queremos ver o relatório independentemente de ser PR ou Push. if: always() uses: actions/upload-artifact@v3 with: diff --git a/frontend/index.html b/frontend/index.html index 1d566d0..b85fc66 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -3,7 +3,7 @@ - Home | Apex Solutions branch sec + Home | Apex Solutions