Skip to content

Commit e12ff5d

Browse files
Merge pull request #43 from primer/lukasoppermann-update_major_tag
Create update_major_tag.yml
2 parents 351d471 + 5fc9302 commit e12ff5d

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Update major version tag
2+
3+
on:
4+
push:
5+
tags:
6+
- v[0-9]+.[0-9]+.[0-9]+
7+
8+
jobs:
9+
tag-version:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
steps:
14+
- name: Create Tag
15+
uses: actions/github-script@v7
16+
with:
17+
script: |
18+
// get inputs
19+
const version = "${{ github.ref_name }}"
20+
const prefix = "v"
21+
console.log("github", github)
22+
console.log("context", context)
23+
24+
// extract major version number
25+
const prefixRe = new RegExp(`^${prefix}`)
26+
const versionNumber = `${version}`.replace(prefixRe, "")
27+
const majorVersionNumber = versionNumber.substring(0, versionNumber.indexOf("."))
28+
const majorVersion = `${prefix}${majorVersionNumber}`
29+
console.log(majorVersion)
30+
31+
// retrieve info about input tag to get sha
32+
core.info(`Retrieving info for tag ${version}...`)
33+
const tagParams = {
34+
owner: context.repo.owner,
35+
repo: context.repo.repo,
36+
ref: `tags/${ version }`,
37+
}
38+
console.log(tagParams)
39+
const { data: {object: {sha} } } = await github.rest.git.getRef(tagParams)
40+
console.log(sha)
41+
42+
// retrieve major tag
43+
const getRefParams = {
44+
owner: context.repo.owner,
45+
repo: context.repo.repo,
46+
ref: `tags/${majorVersion}`,
47+
};
48+
let ref;
49+
try {
50+
ref = await github.rest.git.getRef(getRefParams);
51+
core.info(`Tag ${majorVersion} already exists`);
52+
} catch (error) {
53+
core.error(error)
54+
core.info(`Tag ${majorVersion} does not exist yet`);
55+
}
56+
console.log("Ref:", ref)
57+
// create major version tag
58+
if(!ref) {
59+
core.info(`Creating major version ${majorVersion}...`)
60+
// create major version tag
61+
const createRefParams = {
62+
...context.repo,
63+
ref: `refs/tags/${majorVersion}`,
64+
sha
65+
}
66+
console.log("createRefParams", createRefParams)
67+
await github.rest.git.createRef(createRefParams)
68+
} else {
69+
core.info(`Updating major version ${majorVersion}...`)
70+
await github.rest.git.updateRef({
71+
...getRefParams,
72+
sha,
73+
force: true,
74+
});
75+
}

0 commit comments

Comments
 (0)