
























@@ -845,7 +845,30 @@ jobs:
845845run: |
846846 set -euo pipefail
847847848- before_json="$(gh run list --workflow npm-telegram-beta-e2e.yml --event workflow_dispatch --limit 100 --json databaseId --jq '[.[].databaseId]')"
848+ gh_with_retry() {
849+ local output status attempt
850+ for attempt in 1 2 3 4 5 6; do
851+ set +e
852+ output="$(gh "$@" 2>&1)"
853+ status=$?
854+ set -e
855+ if [[ "$status" -eq 0 ]]; then
856+ printf '%s\n' "$output"
857+ return 0
858+ fi
859+ if [[ "$output" == *"Bad credentials"* || "$output" == *"HTTP 401"* || "$output" == *"secondary rate limit"* || "$output" == *"API rate limit"* ]]; then
860+ echo "::warning::gh $* failed on attempt ${attempt}: ${output}" >&2
861+ sleep $((attempt * 10))
862+ continue
863+ fi
864+ printf '%s\n' "$output" >&2
865+ return "$status"
866+ done
867+ printf '%s\n' "$output" >&2
868+ return "$status"
869+ }
870+871+ before_json="$(gh_with_retry run list --workflow npm-telegram-beta-e2e.yml --event workflow_dispatch --limit 100 --json databaseId --jq '[.[].databaseId]')"
849872850873 args=(-f package_spec="${PACKAGE_SPEC:-openclaw@beta}" -f harness_ref="$TARGET_SHA" -f provider_mode="$PROVIDER_MODE")
851874 if [[ -z "${PACKAGE_SPEC// }" ]]; then
@@ -863,12 +886,12 @@ jobs:
863886 args+=(-f scenario="$SCENARIO")
864887 fi
865888866- gh workflow run npm-telegram-beta-e2e.yml --ref "$CHILD_WORKFLOW_REF" "${args[@]}"
889+ gh_with_retry workflow run npm-telegram-beta-e2e.yml --ref "$CHILD_WORKFLOW_REF" "${args[@]}"
867890868891 run_id=""
869892 for _ in $(seq 1 60); do
870893 run_id="$(
871- BEFORE_IDS="$before_json" gh run list --workflow npm-telegram-beta-e2e.yml --event workflow_dispatch --limit 50 --json databaseId,createdAt \
894+ BEFORE_IDS="$before_json" gh_with_retry run list --workflow npm-telegram-beta-e2e.yml --event workflow_dispatch --limit 50 --json databaseId,createdAt \
872895 --jq 'map(select(.databaseId as $id | (env.BEFORE_IDS | fromjson | index($id) | not))) | sort_by(.createdAt) | reverse | .[0].databaseId // empty'
873896 )"
874897 if [[ -n "$run_id" ]]; then
@@ -885,29 +908,6 @@ jobs:
885908 echo "Dispatched npm-telegram-beta-e2e.yml: https://github.com/${GITHUB_REPOSITORY}/actions/runs/${run_id}"
886909 echo "run_id=${run_id}" >> "$GITHUB_OUTPUT"
887910888- gh_with_retry() {
889- local output status attempt
890- for attempt in 1 2 3 4 5 6; do
891- set +e
892- output="$(gh "$@" 2>&1)"
893- status=$?
894- set -e
895- if [[ "$status" -eq 0 ]]; then
896- printf '%s\n' "$output"
897- return 0
898- fi
899- if [[ "$output" == *"Bad credentials"* || "$output" == *"HTTP 401"* || "$output" == *"secondary rate limit"* || "$output" == *"API rate limit"* ]]; then
900- echo "::warning::gh $* failed on attempt ${attempt}: ${output}" >&2
901- sleep $((attempt * 10))
902- continue
903- fi
904- printf '%s\n' "$output" >&2
905- return "$status"
906- done
907- printf '%s\n' "$output" >&2
908- return "$status"
909- }
910-911911 cancel_child() {
912912 if [[ -n "${run_id:-}" ]]; then
913913 echo "Cancelling child workflow npm-telegram-beta-e2e.yml: ${run_id}" >&2
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。