This is an automated email from the ASF dual-hosted git repository.

shreemaanabhishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new c132d222f fix(ci): replace blind sleep with health-check retry loops 
(#13156)
c132d222f is described below

commit c132d222f19dc603506c0a54e7f5215147efaed0
Author: Shreemaan Abhishek <[email protected]>
AuthorDate: Wed Apr 8 15:00:17 2026 +0545

    fix(ci): replace blind sleep with health-check retry loops (#13156)
---
 ci/init-common-test-service.sh | 29 ++++++++++++++++++++++++++---
 ci/init-plugin-test-service.sh | 12 +++++++++++-
 2 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/ci/init-common-test-service.sh b/ci/init-common-test-service.sh
index bdf5fe4bb..2674c1ec6 100755
--- a/ci/init-common-test-service.sh
+++ b/ci/init-common-test-service.sh
@@ -16,14 +16,37 @@
 # limitations under the License.
 #
 
+# wait for vault to be ready
+for i in $(seq 1 30); do
+    if curl -sf http://127.0.0.1:8200/v1/sys/health >/dev/null 2>&1; then
+        break
+    fi
+    if [ "$i" -eq 30 ]; then
+        echo "ERROR: vault failed to become ready"
+        docker logs vault 2>&1 || true
+        exit 1
+    fi
+    sleep 2
+done
+
 # prepare vault kv engine
-sleep 3s
 docker exec -i vault sh -c "VAULT_TOKEN='root' 
VAULT_ADDR='http://0.0.0.0:8200' vault secrets enable -path=kv -version=1 kv"
 
+# wait for localstack to be ready
+for i in $(seq 1 30); do
+    if curl -sf http://127.0.0.1:4566/_localstack/health >/dev/null 2>&1; then
+        break
+    fi
+    if [ "$i" -eq 30 ]; then
+        echo "ERROR: localstack failed to become ready"
+        docker logs localstack 2>&1 || true
+        exit 1
+    fi
+    sleep 2
+done
+
 # prepare localstack
-sleep 3s
 docker exec -i localstack sh -c "awslocal secretsmanager create-secret --name 
apisix-key --description 'APISIX Secret' --secret-string '{\"jack\":\"value\"}'"
-sleep 3s
 docker exec -i localstack sh -c "awslocal secretsmanager create-secret --name 
apisix-mysql --description 'APISIX Secret' --secret-string 'secret'"
 
 # prepare filesystem mcp server
diff --git a/ci/init-plugin-test-service.sh b/ci/init-plugin-test-service.sh
index 7b60607f5..201ae6f4f 100755
--- a/ci/init-plugin-test-service.sh
+++ b/ci/init-plugin-test-service.sh
@@ -49,7 +49,17 @@ after() {
     docker exec -i rmqnamesrv /home/rocketmq/rocketmq-4.6.0/bin/mqadmin 
updateTopic -n rocketmq_namesrv:9876 -t test4 -c DefaultCluster
 
     # wait for keycloak ready
-    bash -c 'while true; do curl -s localhost:8080 &>/dev/null; ret=$?; [[ 
$ret -eq 0 ]] && break; sleep 3; done'
+    for i in $(seq 1 60); do
+        if curl -sf localhost:8080 >/dev/null 2>&1; then
+            break
+        fi
+        if [ "$i" -eq 60 ]; then
+            echo "ERROR: keycloak (apisix_keycloak_new) failed to become ready"
+            docker logs apisix_keycloak_new 2>&1 || true
+            exit 1
+        fi
+        sleep 3
+    done
 
     # install jq
     wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 -O 
jq

Reply via email to