From 3ce7fc0ae342c1f957c1426c4ab618b00a0b484f Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Tue, 28 Dec 2021 20:16:54 +0100 Subject: [PATCH] ci: Fix race condition while checking container IP Be resilient and recheck the container's status if its IP address couldn't be determined on the first attempt. --- .github/workflows/scripts/lib/testing.sh | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scripts/lib/testing.sh b/.github/workflows/scripts/lib/testing.sh index 1099d1e..a217927 100755 --- a/.github/workflows/scripts/lib/testing.sh +++ b/.github/workflows/scripts/lib/testing.sh @@ -74,7 +74,26 @@ function service_ip { local cid cid="$(container_id "$svc")" - ip="$(docker container inspect "$cid" --format '{{ (index .NetworkSettings.Networks "docker-elk_elk").IPAddress }}')" + local ip + + local -i was_retried=0 + + # retry for max 10s (5*2s) + for _ in $(seq 1 5); do + ip="$(docker container inspect "$cid" --format '{{ (index .NetworkSettings.Networks "docker-elk_elk").IPAddress }}')" + if [ -n "$ip" ]; then + break + fi + + was_retried=1 + echo -n '.' >&2 + sleep 2 + done + if ((was_retried)); then + # flush stderr, important in non-interactive environments (CI) + echo >&2 + fi + if [ -z "${ip:-}" ]; then err "Container ${cid} has no IP address" return 1