Skip to content

Commit 18da9da

Browse files
hendisantikaclaude
andcommitted
🔄 ci: add retry mechanism for docker pull during deployment
The dev server has intermittent Docker Hub connectivity issues. Retry the pull up to 5 times with 15s between attempts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 0fefd71 commit 18da9da

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

.github/workflows/deploy-dev.yml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,28 @@ jobs:
7272
7373
- name: Deploy on server
7474
run: |
75-
ssh deployer@103.31.204.189 "cd ~/jvmid-bot && export DOCKER_UID=\$(id -u) DOCKER_GID=\$(id -g) && IMAGE_TAG=${{ github.run_number }} docker compose -f docker-compose.prod.yml pull && IMAGE_TAG=${{ github.run_number }} docker compose -f docker-compose.prod.yml up -d && docker image prune -f && echo 'Deployment complete (tag: ${{ github.run_number }}). Running containers:' && docker ps --filter 'name=jvmid-bot'"
75+
ssh deployer@103.31.204.189 '
76+
cd ~/jvmid-bot
77+
export DOCKER_UID=$(id -u) DOCKER_GID=$(id -g)
78+
79+
# Pull image with retry (up to 5 attempts, 15s between retries)
80+
MAX_RETRIES=5
81+
for i in $(seq 1 $MAX_RETRIES); do
82+
echo "Pull attempt $i/$MAX_RETRIES..."
83+
if IMAGE_TAG=${{ github.run_number }} docker compose -f docker-compose.prod.yml pull 2>&1; then
84+
echo "Pull succeeded"
85+
break
86+
fi
87+
if [ "$i" -eq "$MAX_RETRIES" ]; then
88+
echo "Pull failed after $MAX_RETRIES attempts"
89+
exit 1
90+
fi
91+
echo "Pull failed, retrying in 15s..."
92+
sleep 15
93+
done
94+
95+
IMAGE_TAG=${{ github.run_number }} docker compose -f docker-compose.prod.yml up -d
96+
docker image prune -f
97+
echo "Deployment complete (tag: ${{ github.run_number }}). Running containers:"
98+
docker ps --filter "name=jvmid-bot"
99+
'

0 commit comments

Comments
 (0)