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