Skip to content

Commit 668b9aa

Browse files
hendisantikaclaude
andcommitted
🔧 ci: use retry loop for health check instead of fixed sleep
Bot startup can take longer than 15s. Use a retry loop (up to 2min) that polls every 10s for group registration before running checks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 5720f52 commit 668b9aa

1 file changed

Lines changed: 26 additions & 5 deletions

File tree

.github/workflows/deploy-dev.yml

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,29 @@ jobs:
7474
7575
- name: Health check
7676
run: |
77-
echo "Waiting 15s for bot to start..."
78-
sleep 15
7977
ssh deployer@103.31.204.189 '
78+
echo "=== Waiting for bot to start ==="
79+
MAX_RETRIES=12
80+
RETRY_INTERVAL=10
81+
for i in $(seq 1 $MAX_RETRIES); do
82+
# Check container is still running
83+
if ! docker ps --filter "name=jvmid-bot" --filter "status=running" -q | grep -q .; then
84+
echo "❌ Container is NOT running"
85+
docker logs jvmid-bot --tail 50 2>&1
86+
exit 1
87+
fi
88+
89+
# Check if groups have been registered
90+
GROUPS_LOADED=$(docker logs jvmid-bot 2>&1 | grep -c "Registered group" || true)
91+
if [ "$GROUPS_LOADED" -ge 1 ]; then
92+
break
93+
fi
94+
95+
echo "Attempt $i/$MAX_RETRIES: Bot still starting... (waiting ${RETRY_INTERVAL}s)"
96+
sleep $RETRY_INTERVAL
97+
done
98+
99+
echo ""
80100
echo "=== Container Status ==="
81101
docker ps --filter "name=jvmid-bot" --format "table {{.Names}}\t{{.Status}}\t{{.RunningFor}}"
82102
@@ -86,7 +106,7 @@ jobs:
86106
87107
echo ""
88108
echo "=== Health Checks ==="
89-
# Check container is running
109+
# Final container check
90110
if docker ps --filter "name=jvmid-bot" --filter "status=running" -q | grep -q .; then
91111
echo "✅ Container is running"
92112
else
@@ -95,16 +115,17 @@ jobs:
95115
exit 1
96116
fi
97117
98-
# Check groups loaded from logs
118+
# Final groups check
99119
GROUPS_LOADED=$(docker logs jvmid-bot 2>&1 | grep -c "Registered group" || true)
100120
if [ "$GROUPS_LOADED" -ge 1 ]; then
101121
echo "✅ $GROUPS_LOADED group(s) registered"
102122
else
103123
echo "❌ No groups registered - check groups.json and logs"
124+
docker logs jvmid-bot --tail 50 2>&1
104125
exit 1
105126
fi
106127
107-
# Check no crash loops (container restarted)
128+
# Check no crash loops
108129
RESTART_COUNT=$(docker inspect jvmid-bot --format="{{.RestartCount}}" 2>/dev/null || echo "0")
109130
if [ "$RESTART_COUNT" -eq 0 ]; then
110131
echo "✅ No restarts detected"

0 commit comments

Comments
 (0)