From b5811ea2b3e18807b2af25ebe035d372cd5ba70a Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Fri, 19 Jun 2026 21:42:41 +0200 Subject: [PATCH] fix(ci): retry stable closeout package lookup --- .../openclaw-stable-main-closeout.yml | 23 +++++++++++++++++-- .../package-acceptance-workflow.test.ts | 10 +++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/.github/workflows/openclaw-stable-main-closeout.yml b/.github/workflows/openclaw-stable-main-closeout.yml index 494d8dc50a7a..c7114ef88bcb 100644 --- a/.github/workflows/openclaw-stable-main-closeout.yml +++ b/.github/workflows/openclaw-stable-main-closeout.yml @@ -88,8 +88,27 @@ jobs: if [[ "$release_package_version" =~ ^(.+)-[0-9]+$ ]]; then fallback_package_version="${BASH_REMATCH[1]}" fi - tag_package_version="$(gh api "repos/$GITHUB_REPOSITORY/contents/package.json?ref=$tag" \ - --jq '.content' | tr -d '\n' | base64 --decode | jq -r '.version // empty')" + tag_package_content="$RUNNER_TEMP/tag-package-content.b64" + tag_package_read=false + for attempt in 1 2 3; do + if gh api "repos/$GITHUB_REPOSITORY/contents/package.json?ref=$tag" \ + --jq '.content' > "$tag_package_content"; then + tag_package_read=true + break + fi + if [[ "$attempt" != "3" ]]; then + sleep $((attempt * 5)) + fi + done + if [[ "$tag_package_read" != "true" ]]; then + echo "Stable closeout could not read package.json for $tag from GitHub API." >&2 + exit 1 + fi + if ! tag_package_json="$(tr -d '\n' < "$tag_package_content" | base64 --decode)"; then + echo "Stable closeout package.json content for $tag was not valid base64." >&2 + exit 1 + fi + tag_package_version="$(jq -r '.version // empty' <<<"$tag_package_json")" fallback_correction=false evidence_source_tag="$tag" if [[ "$release_package_version" != "$fallback_package_version" && diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index 7532bf154aed..a91a5bde6fb8 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -119,9 +119,17 @@ describe("package acceptance workflow", () => { expect(workflow).toContain('evidence_checksum_asset="${evidence_asset}.sha256"'); expect(workflow).toContain('--pattern "$evidence_checksum_asset"'); expect(workflow).toContain('fallback_package_version="${BASH_REMATCH[1]}"'); + expect(workflow).toContain('tag_package_content="$RUNNER_TEMP/tag-package-content.b64"'); + expect(workflow).toContain('gh api "repos/$GITHUB_REPOSITORY/contents/package.json?ref=$tag"'); + expect(workflow).toContain("for attempt in 1 2 3; do"); + expect(workflow).toContain("sleep $((attempt * 5))"); expect(workflow).toContain( - 'tag_package_version="$(gh api "repos/$GITHUB_REPOSITORY/contents/package.json?ref=$tag"', + "Stable closeout could not read package.json for $tag from GitHub API.", ); + expect(workflow).toContain( + "Stable closeout package.json content for $tag was not valid base64.", + ); + expect(workflow).toContain('tag_package_version="$(jq -r'); expect(workflow).toContain('evidence_source_tag="v$fallback_package_version"'); expect(workflow).toContain('gh release download "$evidence_source_tag"'); expect(workflow).toContain("Checkout fallback evidence tag");