From b45ac800594138e530b76d673af6a909c2d723ee Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Thu, 13 Jun 2024 21:09:39 +0200 Subject: [PATCH 1/2] Replace wait for it with a simple sleep --- .github/workflows/ci_validate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_validate.yml b/.github/workflows/ci_validate.yml index ed8b1da..e985349 100644 --- a/.github/workflows/ci_validate.yml +++ b/.github/workflows/ci_validate.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Wait a maximum of 3 min for the preview site to be up - run: .github/workflows/wait_for_it.sh --host="${DEPLOY_PREVIEW}" --port=443 -t 180 + run: sleep 180 validate_provider_list: name: Provider index meta-db From 47a99cef6251113b1fc3c39ee5e5b76fc6b56244 Mon Sep 17 00:00:00 2001 From: Matthew Evans Date: Sat, 15 Jun 2024 20:11:23 +0200 Subject: [PATCH 2/2] Attempt to replace wait-for-it with simple curl check --- .github/workflows/ci_validate.yml | 5 +- .github/workflows/wait_for_it.sh | 161 ------------------------------ 2 files changed, 3 insertions(+), 163 deletions(-) delete mode 100755 .github/workflows/wait_for_it.sh diff --git a/.github/workflows/ci_validate.yml b/.github/workflows/ci_validate.yml index e985349..a3cf3d3 100644 --- a/.github/workflows/ci_validate.yml +++ b/.github/workflows/ci_validate.yml @@ -12,8 +12,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Wait a maximum of 3 min for the preview site to be up - run: sleep 180 + - name: Wait a maximum of 3 min for the info endpoint of the preview site to be up + # Note that it seems that netlify comes up without the info endpoint being ready, so we need to test explicitly for it + run: curl --head -X GET --retry 10 --retry-connrefused --retry-delay 18 https://${DEPLOY_PREVIEW}/v1/info/ || exit 1 validate_provider_list: name: Provider index meta-db diff --git a/.github/workflows/wait_for_it.sh b/.github/workflows/wait_for_it.sh deleted file mode 100755 index eca6c3b..0000000 --- a/.github/workflows/wait_for_it.sh +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env bash -# Use this script to test if a given TCP host/port are available - -cmdname=$(basename $0) - -echoerr() { if [[ $QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } - -usage() -{ - cat << USAGE >&2 -Usage: - $cmdname host:port [-s] [-t timeout] [-- command args] - -h HOST | --host=HOST Host or IP under test - -p PORT | --port=PORT TCP port under test - Alternatively, you specify the host and port as host:port - -s | --strict Only execute subcommand if the test succeeds - -q | --quiet Don't output any status messages - -t TIMEOUT | --timeout=TIMEOUT - Timeout in seconds, zero for no timeout - -- COMMAND ARGS Execute command with args after the test finishes -USAGE - exit 1 -} - -wait_for() -{ - if [[ $TIMEOUT -gt 0 ]]; then - echoerr "$cmdname: waiting $TIMEOUT seconds for $HOST:$PORT" - else - echoerr "$cmdname: waiting for $HOST:$PORT without a timeout" - fi - start_ts=$(date +%s) - while : - do - (echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1 - result=$? - if [[ $result -eq 0 ]]; then - end_ts=$(date +%s) - echoerr "$cmdname: $HOST:$PORT is available after $((end_ts - start_ts)) seconds" - break - fi - sleep 1 - done - return $result -} - -wait_for_wrapper() -{ - # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 - if [[ $QUIET -eq 1 ]]; then - timeout $TIMEOUT $0 --quiet --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & - else - timeout $TIMEOUT $0 --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & - fi - PID=$! - trap "kill -INT -$PID" INT - wait $PID - RESULT=$? - if [[ $RESULT -ne 0 ]]; then - echoerr "$cmdname: timeout occurred after waiting $TIMEOUT seconds for $HOST:$PORT" - fi - return $RESULT -} - -# process arguments -while [[ $# -gt 0 ]] -do - case "$1" in - *:* ) - hostport=(${1//:/ }) - HOST=${hostport[0]} - PORT=${hostport[1]} - shift 1 - ;; - --child) - CHILD=1 - shift 1 - ;; - -q | --quiet) - QUIET=1 - shift 1 - ;; - -s | --strict) - STRICT=1 - shift 1 - ;; - -h) - HOST="$2" - if [[ $HOST == "" ]]; then break; fi - shift 2 - ;; - --host=*) - HOST="${1#*=}" - shift 1 - ;; - -p) - PORT="$2" - if [[ $PORT == "" ]]; then break; fi - shift 2 - ;; - --port=*) - PORT="${1#*=}" - shift 1 - ;; - -t) - TIMEOUT="$2" - if [[ $TIMEOUT == "" ]]; then break; fi - shift 2 - ;; - --timeout=*) - TIMEOUT="${1#*=}" - shift 1 - ;; - --) - shift - CLI="$@" - break - ;; - --help) - usage - ;; - *) - echoerr "Unknown argument: $1" - usage - ;; - esac -done - -if [[ "$HOST" == "" || "$PORT" == "" ]]; then - echoerr "Error: you need to provide a host and port to test." - usage -fi - -TIMEOUT=${TIMEOUT:-15} -STRICT=${STRICT:-0} -CHILD=${CHILD:-0} -QUIET=${QUIET:-0} - -if [[ $CHILD -gt 0 ]]; then - wait_for - RESULT=$? - exit $RESULT -else - if [[ $TIMEOUT -gt 0 ]]; then - wait_for_wrapper - RESULT=$? - else - wait_for - RESULT=$? - fi -fi - -if [[ $CLI != "" ]]; then - if [[ $RESULT -ne 0 && $STRICT -eq 1 ]]; then - echoerr "$cmdname: strict mode, refusing to execute subprocess" - exit $RESULT - fi - exec $CLI -else - exit $RESULT -fi