diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index a3b0663..ddfdd66 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -31,6 +31,39 @@ jobs: docker compose exec -T postgres pg_isready -U postgres docker compose exec -T ward-gateway-db pg_isready -U postgres + - name: Wait for Kafka + run: | + for i in $(seq 1 90); do + if docker compose exec -T kafka \ + /opt/kafka/bin/kafka-broker-api-versions.sh \ + --bootstrap-server localhost:9092 >/dev/null 2>&1; then + echo "Kafka is ready" + exit 0 + fi + echo "waiting for Kafka ($i)..." + sleep 2 + done + echo "Kafka failed to become ready" >&2 + docker compose logs --tail=100 kafka + exit 1 + + - name: Wait for Redis / RabbitMQ / Elasticsearch + run: | + for i in $(seq 1 60); do + docker compose exec -T redis redis-cli ping 2>/dev/null | grep -q PONG \ + && docker compose exec -T ward-gateway-redis redis-cli ping 2>/dev/null | grep -q PONG \ + && docker compose exec -T rabbitmq rabbitmq-diagnostics -q ping \ + && docker compose exec -T ward-gateway-rabbitmq rabbitmq-diagnostics -q ping \ + && docker compose exec -T elasticsearch curl -sf http://localhost:9200/_cluster/health >/dev/null \ + && echo "Redis, RabbitMQ, and Elasticsearch are ready" && exit 0 + echo "waiting for brokers ($i)..." + sleep 2 + done + echo "Brokers failed to become ready" >&2 + docker compose ps + docker compose logs --tail=50 redis rabbitmq elasticsearch ward-gateway-redis ward-gateway-rabbitmq + exit 1 + - name: Create test databases run: | docker compose exec -T postgres psql -U postgres -tc "SELECT 1 FROM pg_database WHERE datname='vigilcare_test'" \