fix(ci): retry stable closeout package lookup

This commit is contained in:
Vincent Koc
2026-06-19 21:42:41 +02:00
parent bb1043b14c
commit b5811ea2b3
2 changed files with 30 additions and 3 deletions

View File

@@ -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" &&

View File

@@ -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");