diff --git a/.github/workflows/queue-service-deploy.yml b/.github/workflows/queue-service-deploy.yml index 0b76c6e..a9f29b2 100644 --- a/.github/workflows/queue-service-deploy.yml +++ b/.github/workflows/queue-service-deploy.yml @@ -57,7 +57,7 @@ jobs: docker push $REGISTRY/$IMAGE_NAME:$IMAGE_TAG docker push $REGISTRY/$IMAGE_NAME:${{ github.sha }} - - name: Deploy queue-service to EC2 + - name: Deploy queue-service to main-1 EC2 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} @@ -65,8 +65,76 @@ jobs: key: ${{ secrets.EC2_SSH_KEY }} script: | echo "${{ secrets.GPR_TOKEN }}" | docker login ghcr.io -u ${{ secrets.GPR_USER }} --password-stdin + + cd ~/deploy/ticketing/ticketing-system + + git fetch origin + git reset --hard origin/dev + + docker compose -f docker-compose.app.yml pull queue-service + docker compose -f docker-compose.app.yml up -d --no-deps --force-recreate queue-service + + for i in {1..30}; do + if curl -fsS http://localhost:20007/actuator/health > /dev/null; then + echo "queue-service on main-1 is healthy" + docker ps --filter "name=ticketing-queue-service" + exit 0 + fi + + echo "Waiting for queue-service on main-1... ($i/30)" + sleep 3 + done + + echo "queue-service health check failed on main-1" + docker logs --tail=100 ticketing-queue-service + exit 1 + + - name: Deploy queue-service to main-2 EC2 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.EC2_HOST_2 }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + script: | + echo "${{ secrets.GPR_TOKEN }}" | docker login ghcr.io -u ${{ secrets.GPR_USER }} --password-stdin + cd ~/deploy/ticketing/ticketing-system + + git fetch origin + git reset --hard origin/dev + docker compose -f docker-compose.app.yml pull queue-service docker compose -f docker-compose.app.yml up -d --no-deps --force-recreate queue-service - docker ps --filter "name=ticketing-queue-service" + + for i in {1..30}; do + if curl -fsS http://localhost:20007/actuator/health > /dev/null; then + echo "queue-service on main-2 is healthy" + docker ps --filter "name=ticketing-queue-service" + exit 0 + fi + + echo "Waiting for queue-service on main-2... ($i/30)" + sleep 3 + done + + echo "queue-service health check failed on main-2" + docker logs --tail=100 ticketing-queue-service + exit 1 + + - name: Prune Docker images on main-1 EC2 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + script: | + docker image prune -f + + - name: Prune Docker images on main-2 EC2 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.EC2_HOST_2 }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + script: | docker image prune -f