Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 70 additions & 2 deletions .github/workflows/queue-service-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,84 @@ 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 }}
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

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
Loading