Skip to content

Commit aecd59b

Browse files
Improve tag and release creation in workflow (#498)
Refactor tag and release creation logic to avoid duplicate checks.
1 parent 3645c51 commit aecd59b

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

.github/workflows/release.yml

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,33 +23,49 @@ jobs:
2323
github-token: ${{ secrets.GITHUB_TOKEN }}
2424
script: |
2525
const tagName = `${process.env.RELEASE_BRANCH.split("/")[1]}`;
26+
let tagExists = false;
27+
2628
try {
29+
await github.rest.git.getRef({
30+
owner: context.repo.owner,
31+
repo: context.repo.repo,
32+
ref: `tags/${tagName}`,
33+
});
34+
tagExists = true;
35+
core.warning(`Tag ${tagName} already exists — skipping creation`);
36+
} catch (e) {
37+
if (e.status !== 404) throw e;
38+
}
39+
40+
if (!tagExists) {
2741
await github.rest.git.createRef({
2842
owner: context.repo.owner,
2943
repo: context.repo.repo,
3044
ref: `refs/tags/${tagName}`,
3145
sha: context.payload.pull_request.merge_commit_sha,
3246
});
33-
} catch (e) {
34-
if (e.status === 422 && e.message.includes('already exists')) {
35-
core.warning(`Tag ${tagName} already exists — skipping creation`);
36-
} else {
37-
throw e;
38-
}
3947
}
48+
49+
let releaseExists = false;
4050
try {
51+
await github.rest.repos.getReleaseByTag({
52+
owner: context.repo.owner,
53+
repo: context.repo.repo,
54+
tag: tagName,
55+
});
56+
releaseExists = true;
57+
core.warning(`Release ${tagName} already exists — skipping creation`);
58+
} catch (e) {
59+
if (e.status !== 404) throw e;
60+
}
61+
62+
if (!releaseExists) {
4163
await github.rest.repos.createRelease({
4264
owner: context.repo.owner,
4365
repo: context.repo.repo,
4466
generate_release_notes: true,
4567
tag_name: tagName,
4668
});
47-
} catch (e) {
48-
if (e.status === 422 && e.message.includes('already exists')) {
49-
core.warning(`Release ${tagName} already exists — skipping creation`);
50-
} else {
51-
throw e;
52-
}
5369
}
5470
build_artifacts:
5571
needs: create_release

0 commit comments

Comments
 (0)