Skip to content

Commit ff24ed0

Browse files
authored
Create vlatest-tag-update
1 parent f1bed66 commit ff24ed0

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

.github/workflows/vlatest-tag-update

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Recreate vLatest from develop
2+
3+
on:
4+
workflow_dispatch:
5+
6+
permissions:
7+
contents: write # needed to delete/create releases & tags
8+
9+
jobs:
10+
recreate-vlatest:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Delete release "vLatest" if it exists
14+
uses: actions/github-script@v7
15+
with:
16+
script: |
17+
const owner = context.repo.owner;
18+
const repo = context.repo.repo;
19+
const tag = 'vLatest';
20+
21+
// Try to fetch the release by tag
22+
try {
23+
const rel = await github.rest.repos.getReleaseByTag({ owner, repo, tag });
24+
core.info(`Found release for tag ${tag}: id=${rel.data.id}. Deleting...`);
25+
await github.rest.repos.deleteRelease({ owner, repo, release_id: rel.data.id });
26+
core.info(`Deleted release id=${rel.data.id}.`);
27+
} catch (err) {
28+
if (err.status === 404) {
29+
core.info(`No release found for tag ${tag}; skipping delete.`);
30+
} else {
31+
throw err;
32+
}
33+
}
34+
35+
- name: Delete tag "vLatest" if it exists
36+
uses: actions/github-script@v7
37+
with:
38+
script: |
39+
const owner = context.repo.owner;
40+
const repo = context.repo.repo;
41+
const ref = 'tags/vLatest';
42+
try {
43+
await github.rest.git.deleteRef({ owner, repo, ref });
44+
core.info(`Deleted ref ${ref}.`);
45+
} catch (err) {
46+
if (err.status === 404) {
47+
core.info(`Ref ${ref} not found; skipping.`);
48+
} else {
49+
// Some repos may return 422 if the ref doesn't exist in certain states
50+
if (err.status === 422) {
51+
core.info(`Ref ${ref} not deletable/doesn't exist; skipping.`);
52+
} else {
53+
throw err;
54+
}
55+
}
56+
}
57+
58+
- name: Create release "vLatest" from develop
59+
uses: actions/github-script@v7
60+
with:
61+
script: |
62+
const owner = context.repo.owner;
63+
const repo = context.repo.repo;
64+
const tag_name = 'vLatest';
65+
const target_commitish = 'develop';
66+
67+
const res = await github.rest.repos.createRelease({
68+
owner,
69+
repo,
70+
tag_name,
71+
target_commitish,
72+
name: tag_name,
73+
body: 'Automated vLatest release from `develop`.',
74+
draft: false,
75+
prerelease: false,
76+
// If supported on your repo, this marks it as the "Latest" on the Releases page.
77+
make_latest: 'true'
78+
});
79+
core.info(`Created release ${res.data.html_url}`);

0 commit comments

Comments
 (0)