|
53 | 53 | docker compose -f docker-compose.dev-ci.yml build web && |
54 | 54 | docker compose -f docker-compose.dev-ci.yml run --rm web python manage.py migrate && |
55 | 55 | docker compose -f docker-compose.dev-ci.yml up -d --force-recreate && |
| 56 | + expected_image="procollab-dev-api:${IMAGE_TAG}" && |
| 57 | + for service in web celerys; do |
| 58 | + container="$(docker compose -f docker-compose.dev-ci.yml ps -q "$service")" |
| 59 | + if [ -z "$container" ]; then |
| 60 | + echo "Service ${service} has no running container" >&2 |
| 61 | + docker compose -f docker-compose.dev-ci.yml ps >&2 || true |
| 62 | + exit 1 |
| 63 | + fi |
| 64 | +
|
| 65 | + actual_image="$(docker inspect -f '{{.Config.Image}}' "$container")" |
| 66 | + echo "Service ${service}: container=${container} image=${actual_image}" |
| 67 | + if [ "$actual_image" != "$expected_image" ]; then |
| 68 | + echo "Service ${service} uses unexpected image: ${actual_image}, expected ${expected_image}" >&2 |
| 69 | + docker compose -f docker-compose.dev-ci.yml ps >&2 || true |
| 70 | + exit 1 |
| 71 | + fi |
| 72 | + done && |
56 | 73 |
|
57 | 74 | install -d /etc/nginx/procollab/includes && |
58 | 75 | install -m 644 deploy/nginx/host/includes/proxy_app.inc /etc/nginx/procollab/includes/proxy_app.inc && |
@@ -83,28 +100,37 @@ jobs: |
83 | 100 | exit 1 |
84 | 101 | fi && |
85 | 102 |
|
86 | | - celery_status="" && |
87 | | - celery_ping="" && |
88 | | - for attempt in $(seq 1 24); do |
89 | | - celery_status="$(docker inspect -f '{{.State.Status}}' api_celery 2>/dev/null || true)" && |
| 103 | + docker compose -f docker-compose.dev-ci.yml ps |
| 104 | +
|
| 105 | + celery_status="" |
| 106 | + celery_ping="" |
| 107 | + celery_container="" |
| 108 | + for attempt in $(seq 1 12); do |
| 109 | + celery_container="$(docker compose -f docker-compose.dev-ci.yml ps -q celerys 2>/dev/null || true)" |
| 110 | + if [ -n "$celery_container" ]; then |
| 111 | + celery_status="$(docker inspect -f '{{.State.Status}}' "$celery_container" 2>/dev/null || true)" |
| 112 | + else |
| 113 | + celery_status="missing" |
| 114 | + fi |
| 115 | +
|
| 116 | + echo "Celery check attempt ${attempt}: container=${celery_container:-missing} status=${celery_status}" |
90 | 117 | if [ "$celery_status" = "running" ]; then |
91 | | - celery_ping="$(docker compose -f docker-compose.dev-ci.yml exec -T celerys sh -lc 'celery -A procollab inspect ping --timeout=10' 2>&1 || true)" && |
92 | | - printf '%s\n' "$celery_ping" && |
| 118 | + celery_ping="$(docker compose -f docker-compose.dev-ci.yml exec -T celerys sh -lc 'celery -A procollab inspect ping --timeout=15' 2>&1 || true)" |
| 119 | + printf '%s\n' "$celery_ping" |
93 | 120 | if printf '%s\n' "$celery_ping" | grep -q 'pong'; then |
94 | | - echo "Celery check passed on attempt ${attempt}" && |
| 121 | + echo "Celery check passed on attempt ${attempt}" |
95 | 122 | break |
96 | 123 | fi |
97 | | - fi && |
| 124 | + fi |
98 | 125 |
|
99 | 126 | sleep 5 |
100 | | - done && |
101 | | -
|
102 | | - if [ "$celery_status" != "running" ]; then |
103 | | - echo "Celery container is not running: ${celery_status}" >&2 && |
104 | | - exit 1 |
105 | | - fi && |
106 | | -
|
107 | | - printf '%s\n' "$celery_ping" | grep -q 'pong' || { |
108 | | - echo "Celery ping failed" >&2 |
| 127 | + done |
| 128 | +
|
| 129 | + if [ "$celery_status" != "running" ] || ! printf '%s\n' "$celery_ping" | grep -q 'pong'; then |
| 130 | + echo "Celery check failed: status=${celery_status}" >&2 |
| 131 | + docker compose -f docker-compose.dev-ci.yml ps >&2 || true |
| 132 | + docker compose -f docker-compose.dev-ci.yml logs --tail=200 celerys >&2 || true |
| 133 | + docker compose -f docker-compose.dev-ci.yml logs --tail=100 redis >&2 || true |
| 134 | + docker compose -f docker-compose.dev-ci.yml logs --tail=100 web >&2 || true |
109 | 135 | exit 1 |
110 | | - } |
| 136 | + fi |
0 commit comments