feat: leverage healthcheck (#16)
Blog Deployment / Check-Rebuild (push) Successful in 5s
Blog Deployment / Build (push) Skipped
Blog Deployment / Deploy-Production (push) Successful in 10s
Blog Deployment / Test-Production (push) Successful in 3s
Blog Deployment / Deploy-Staging (push) Successful in 10s
Blog Deployment / Test-Staging (push) Successful in 2s
Blog Deployment / Merge (push) Successful in 7s
Blog Deployment / Clean (push) Skipped
Blog Deployment / Notify (push) Successful in 2s

Reviewed-on: #16
This commit was merged in pull request #16.
This commit is contained in:
2026-09-16 11:24:25 +02:00
parent 246ba7bf07
commit 81f032031b
2 changed files with 142 additions and 8 deletions
+90 -2
View File
@@ -106,9 +106,53 @@ jobs:
- name: Launch Blog Deployment
run: |
cd /blog
echo "- Stopping existing ${CONTAINER_NAME}..."
docker compose down ${CONTAINER_NAME}
echo "- Starting ${CONTAINER_NAME}..."
docker compose up -d ${CONTAINER_NAME}
sleep 30
echo "- Waiting for ${CONTAINER_NAME} to become healthy..."
timeout=300
elapsed=0
while true; do
status=$(docker inspect \
--format='{{.State.Health.Status}}' \
${CONTAINER_NAME})
echo "Health status: ${status}"
case "$status" in
healthy)
echo "✅ ${CONTAINER_NAME} is healthy"
break
;;
unhealthy)
echo "❌ ${CONTAINER_NAME} is unhealthy"
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
exit 1
;;
*)
;;
esac
if [ "$elapsed" -ge "$timeout" ]; then
echo "❌ Timed out waiting for ${CONTAINER_NAME}"
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
exit 1
fi
sleep 2
elapsed=$((elapsed + 2))
done
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
@@ -161,9 +205,53 @@ jobs:
- name: Launch Blog Deployment
run: |
cd /blog
echo "- Stopping existing ${CONTAINER_NAME}..."
docker compose down ${CONTAINER_NAME}
echo "- Starting ${CONTAINER_NAME}..."
docker compose up -d ${CONTAINER_NAME}
sleep 30
echo "- Waiting for ${CONTAINER_NAME} to become healthy..."
timeout=300
elapsed=0
while true; do
status=$(docker inspect \
--format='{{.State.Health.Status}}' \
${CONTAINER_NAME})
echo "Health status: ${status}"
case "$status" in
healthy)
echo "✅ ${CONTAINER_NAME} is healthy"
break
;;
unhealthy)
echo "❌ ${CONTAINER_NAME} is unhealthy"
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
exit 1
;;
*)
;;
esac
if [ "$elapsed" -ge "$timeout" ]; then
echo "❌ Timed out waiting for ${CONTAINER_NAME}"
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
exit 1
fi
sleep 2
elapsed=$((elapsed + 2))
done
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
+49 -3
View File
@@ -93,7 +93,7 @@ jobs:
needs:
- Check-Rebuild
- Build
if: always() && needs.Check-Rebuild.result == 'success' && (needs.Build.result == 'skipped' || needs.Build.result == 'success')
if: always()
runs-on: docker
container:
volumes:
@@ -107,11 +107,57 @@ jobs:
- name: Launch Blog Test Deployment
run: |
cd /blog
echo "- Stopping existing ${CONTAINER_NAME}..."
docker compose down ${CONTAINER_NAME}
BLOG_TEST_BRANCH=${{ gitea.ref_name }} docker compose up -d ${CONTAINER_NAME}
sleep 30
echo "- Starting ${CONTAINER_NAME}..."
BLOG_TEST_BRANCH=${{ gitea.ref_name }} \
docker compose up -d ${CONTAINER_NAME}
echo "- Waiting for ${CONTAINER_NAME} to become healthy..."
timeout=300
elapsed=0
while true; do
status=$(docker inspect \
--format='{{.State.Health.Status}}' \
${CONTAINER_NAME})
echo "Health status: ${status}"
case "$status" in
healthy)
echo "✅ ${CONTAINER_NAME} is healthy"
break
;;
unhealthy)
echo "❌ ${CONTAINER_NAME} is unhealthy"
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
exit 1
;;
*)
;;
esac
if [ "$elapsed" -ge "$timeout" ]; then
echo "❌ Timed out waiting for ${CONTAINER_NAME}"
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
exit 1
fi
sleep 2
elapsed=$((elapsed + 2))
done
echo "- Displaying container logs"
docker compose logs ${CONTAINER_NAME}
Test:
needs: Deploy-Test