From b0d164c8a902aeb3501ab1c8cf78957a93efb627 Mon Sep 17 00:00:00 2001 From: Ricardo Carneiro Date: Sun, 21 Sep 2025 22:03:30 -0300 Subject: [PATCH] fix: modo release --- .gitea/workflows/deploy-bcards.yml | 75 +++++++++++++++--------------- 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/.gitea/workflows/deploy-bcards.yml b/.gitea/workflows/deploy-bcards.yml index 6a0d99f..7cb8718 100644 --- a/.gitea/workflows/deploy-bcards.yml +++ b/.gitea/workflows/deploy-bcards.yml @@ -563,17 +563,30 @@ jobs: - name: Deploy to release swarm run: | echo "🚀 Deploying release stack to Orange Pi swarm..." + docker stack deploy -c artifacts/docker-stack.release.yml bcards-release - mkdir -p ~/.ssh - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H 141.148.162.114 >> ~/.ssh/known_hosts - ssh-keyscan -H 129.146.116.218 >> ~/.ssh/known_hosts + - name: Await release service readiness + run: | + echo "⏳ Aguardando serviço bcards-release estabilizar..." + ATTEMPTS=30 + while [ $ATTEMPTS -gt 0 ]; do + REPLICAS=$(docker service ls --filter name=bcards-release_bcards-release --format '{{.Replicas}}') + if [ "$REPLICAS" = "2/2" ]; then + echo "✅ Serviço com $REPLICAS réplicas" + break + fi + echo "Atual: ${REPLICAS:-N/A}; aguardando..." + sleep 5 + ATTEMPTS=$((ATTEMPTS-1)) + done - scp -o StrictHostKeyChecking=no artifacts/docker-stack.release.yml ubuntu@141.148.162.114:/home/ubuntu/docker-stack.release.yml + if [ "$REPLICAS" != "2/2" ]; then + echo "❌ Serviço não atingiu 2/2 réplicas" + docker service ps bcards-release_bcards-release + exit 1 + fi - ssh -o StrictHostKeyChecking=no ubuntu@141.148.162.114 \ - '/home/ubuntu/scripts/swarm_deploy.sh bcards-release bcards-release /home/ubuntu/docker-stack.release.yml http://localhost:28080/health 2' + docker service ps bcards-release_bcards-release cleanup: name: Cleanup Old Resources @@ -586,40 +599,26 @@ jobs: run: | echo "🧹 Limpando recursos antigos..." - # Configura SSH (igual ao QRRapido) - mkdir -p ~/.ssh - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - - # Adiciona hosts conhecidos - ssh-keyscan -H 141.148.162.114 >> ~/.ssh/known_hosts - ssh-keyscan -H 129.146.116.218 >> ~/.ssh/known_hosts - - # Testa a chave SSH - ssh-add ~/.ssh/id_rsa 2>/dev/null || echo "SSH key loaded" - - # Lista de servidores baseada na branch if [ "${{ github.ref_name }}" = "main" ]; then - SERVERS=("141.148.162.114" "129.146.116.218") + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H 141.148.162.114 >> ~/.ssh/known_hosts + ssh-keyscan -H 129.146.116.218 >> ~/.ssh/known_hosts + ssh-add ~/.ssh/id_rsa 2>/dev/null || echo "SSH key loaded" + + for server in 141.148.162.114 129.146.116.218; do + echo "🧹 Limpando servidor $server..." + ssh -o StrictHostKeyChecking=no ubuntu@$server << 'EOF' + docker container prune -f + docker image prune -f + docker network prune -f + EOF + done else - SERVERS=("141.148.162.114" "129.146.116.218") + echo "ℹ️ Release branch: limpeza remota ignorada (Swarm gerencia recursos)." fi - # Limpeza em cada servidor - for server in "${SERVERS[@]}"; do - echo "🧹 Limpando servidor $server..." - ssh -o StrictHostKeyChecking=no ubuntu@$server << 'EOF' - # Remove containers parados - docker container prune -f - - # Remove imagens não utilizadas - docker image prune -f - - # Remove redes não utilizadas - docker network prune -f - EOF - done - echo "✅ Limpeza concluída!" deployment-summary: