Skip to content

Commit 7abef3d

Browse files
authored
ci(release): verify published metadata
1 parent dcbb59e commit 7abef3d

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

.github/workflows/release.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,17 @@ jobs:
646646
}
647647
}
648648
649+
function assertPublishedReleaseMetadata(candidate) {
650+
if (candidate.draft !== false ||
651+
candidate.prerelease !== false ||
652+
candidate.tag_name !== version ||
653+
candidate.target_commitish !== releaseSha ||
654+
candidate.name !== version ||
655+
candidate.body !== notes) {
656+
throw new Error(`Published release ${version} metadata or target does not match.`);
657+
}
658+
}
659+
649660
async function waitForPublishedRelease(releaseId) {
650661
for (let attempt = 0; attempt < 30; attempt += 1) {
651662
const current = await github.rest.repos.getRelease({
@@ -740,9 +751,7 @@ jobs:
740751
}
741752
742753
if (!release.draft) {
743-
if (release.name !== version || release.body !== notes || release.prerelease) {
744-
throw new Error(`Published release ${version} metadata does not match.`);
745-
}
754+
assertPublishedReleaseMetadata(release);
746755
await verifyRemoteAssets(release.id);
747756
if (await resolveTagCommit(version) !== releaseSha) {
748757
throw new Error(`Published release tag ${version} changed during verification.`);
@@ -804,6 +813,7 @@ jobs:
804813
make_latest: 'true',
805814
});
806815
release = await waitForPublishedRelease(release.id);
816+
assertPublishedReleaseMetadata(release);
807817
if (await resolveTagCommit(version) !== releaseSha) {
808818
throw new Error(`Release tag ${version} changed during publication.`);
809819
}

0 commit comments

Comments
 (0)