fix(release): retry tag ref visibility checks after publish (#400)

GitHub ref APIs can briefly return 404 right after create/update release.
Retry getRef(tags/...) before failing binding verification to avoid false
negatives that interrupt next/release channel publishing.
This commit is contained in:
cucadmuh
2026-05-01 21:19:07 +03:00
committed by GitHub
parent fef13fefd1
commit f91c57ca68
+25 -5
View File
@@ -219,11 +219,31 @@ jobs:
return; return;
} }
const { data: ref } = await github.rest.git.getRef({ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
owner: context.repo.owner,
repo: context.repo.repo, let ref = null;
ref: `tags/${expectedTag}`, let lastRefError = null;
}); for (let attempt = 1; attempt <= 6; attempt++) {
try {
const resp = await github.rest.git.getRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `tags/${expectedTag}`,
});
ref = resp.data;
break;
} catch (e) {
if (e.status !== 404) throw e;
lastRefError = e;
core.warning(`Tag ref '${expectedTag}' is not visible yet (attempt ${attempt}/6); retrying...`);
await sleep(1500 * attempt);
}
}
if (!ref) {
core.setFailed(`tag ref 'tags/${expectedTag}' not found after retries (release_id=${releaseId})`);
if (lastRefError) core.warning(`Last getRef error: ${lastRefError.message}`);
return;
}
let resolvedSha = ref.object.sha; let resolvedSha = ref.object.sha;
if (ref.object.type === "tag") { if (ref.object.type === "tag") {