Skip to content

Commit b32c80d

Browse files
authored
Merge pull request #639 from PROCOLLAB-github/devops-structure-rework
Усилена проверка prod deploy pipeline
2 parents ea9e63d + 0352782 commit b32c80d

1 file changed

Lines changed: 37 additions & 11 deletions

File tree

.github/workflows/release-ci.yml

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,24 @@ jobs:
184184
docker compose -f docker-compose.prod-ci.yml -p prod pull web celerys
185185
186186
docker compose -f docker-compose.prod-ci.yml -p prod run --rm web python manage.py migrate
187-
docker compose -f docker-compose.prod-ci.yml -p prod up -d
187+
docker compose -f docker-compose.prod-ci.yml -p prod up -d --force-recreate
188+
expected_image="ghcr.io/procollab-github/api:${IMAGE_TAG}"
189+
for service in web celerys; do
190+
container="$(docker compose -f docker-compose.prod-ci.yml -p prod ps -q "$service")"
191+
if [ -z "$container" ]; then
192+
echo "Service ${service} has no running container" >&2
193+
docker compose -f docker-compose.prod-ci.yml -p prod ps >&2 || true
194+
exit 1
195+
fi
196+
197+
actual_image="$(docker inspect -f '{{.Config.Image}}' "$container")"
198+
echo "Service ${service}: container=${container} image=${actual_image}"
199+
if [ "$actual_image" != "$expected_image" ]; then
200+
echo "Service ${service} uses unexpected image: ${actual_image}, expected ${expected_image}" >&2
201+
docker compose -f docker-compose.prod-ci.yml -p prod ps >&2 || true
202+
exit 1
203+
fi
204+
done
188205
if [ "$(id -u)" -eq 0 ]; then
189206
nginx -t
190207
systemctl reload nginx
@@ -210,12 +227,22 @@ jobs:
210227
exit 1
211228
fi
212229
230+
docker compose -f docker-compose.prod-ci.yml -p prod ps
231+
213232
celery_status=""
214233
celery_ping=""
215-
for attempt in $(seq 1 24); do
216-
celery_status="$(docker inspect -f '{{.State.Status}}' api_celery 2>/dev/null || true)"
234+
celery_container=""
235+
for attempt in $(seq 1 12); do
236+
celery_container="$(docker compose -f docker-compose.prod-ci.yml -p prod ps -q celerys 2>/dev/null || true)"
237+
if [ -n "$celery_container" ]; then
238+
celery_status="$(docker inspect -f '{{.State.Status}}' "$celery_container" 2>/dev/null || true)"
239+
else
240+
celery_status="missing"
241+
fi
242+
243+
echo "Celery check attempt ${attempt}: container=${celery_container:-missing} status=${celery_status}"
217244
if [ "$celery_status" = "running" ]; then
218-
celery_ping="$(docker compose -f docker-compose.prod-ci.yml -p prod exec -T celerys sh -lc 'celery -A procollab inspect ping --timeout=10' 2>&1 || true)"
245+
celery_ping="$(docker compose -f docker-compose.prod-ci.yml -p prod exec -T celerys sh -lc 'celery -A procollab inspect ping --timeout=15' 2>&1 || true)"
219246
printf '%s\n' "$celery_ping"
220247
if printf '%s\n' "$celery_ping" | grep -q 'pong'; then
221248
echo "Celery check passed on attempt ${attempt}"
@@ -226,12 +253,11 @@ jobs:
226253
sleep 5
227254
done
228255
229-
if [ "$celery_status" != "running" ]; then
230-
echo "Celery container is not running: ${celery_status}" >&2
256+
if [ "$celery_status" != "running" ] || ! printf '%s\n' "$celery_ping" | grep -q 'pong'; then
257+
echo "Celery check failed: status=${celery_status}" >&2
258+
docker compose -f docker-compose.prod-ci.yml -p prod ps >&2 || true
259+
docker compose -f docker-compose.prod-ci.yml -p prod logs --tail=200 celerys >&2 || true
260+
docker compose -f docker-compose.prod-ci.yml -p prod logs --tail=100 redis >&2 || true
261+
docker compose -f docker-compose.prod-ci.yml -p prod logs --tail=100 web >&2 || true
231262
exit 1
232263
fi
233-
234-
printf '%s\n' "$celery_ping" | grep -q 'pong' || {
235-
echo "Celery ping failed" >&2
236-
exit 1
237-
}

0 commit comments

Comments
 (0)