23
23
required : true
24
24
25
25
jobs :
26
- tag :
26
+ check- tag :
27
27
runs-on : ubuntu-latest
28
28
steps :
29
- - uses : actions/checkout@v4
29
+ - uses : actions/checkout@v4.1.1
30
30
with :
31
31
fetch-depth : 0
32
32
36
36
script : |
37
37
const newTag = core.getInput('tag-name');
38
38
const regex = /^v[0-9]+\.[0-9]+\.[0-9]+$/;
39
-
39
+
40
40
if (!regex.test(newTag)) {
41
41
core.setFailed('Tag does not match the required format "v[0-9]+.[0-9]+.[0-9]+"');
42
42
return;
@@ -55,11 +55,14 @@ jobs:
55
55
repo: context.repo.repo,
56
56
ref: 'tags/'
57
57
});
58
- console.log(`Existing tags: ${refs.map(ref => ref.ref.replace('refs/tags/', '')).join(', ')}`);
59
58
60
- const latestTag = refs.sort((a, b) => new Date(b.object.date) - new Date(a.object.date))[0].ref.replace('refs/tags/', '');
61
- console.log(`Latest tag: ${latestTag}`);
59
+ if (refs.length === 0) {
60
+ // No existing tags, so any new tag is valid
61
+ console.log('No existing tags found. Any new tag is considered valid.');
62
+ return;
63
+ }
62
64
65
+ const latestTag = refs.sort((a, b) => new Date(b.object.date) - new Date(a.object.date))[0].ref.replace('refs/tags/', '');
63
66
const latestVersion = latestTag.replace('v', '').split('.').map(Number);
64
67
const newVersion = newTag.replace('v', '').split('.').map(Number);
65
68
@@ -75,35 +78,35 @@ jobs:
75
78
76
79
tag-name : ${{ github.event.inputs.tag-name }}
77
80
78
- release :
79
- needs : tag
81
+ generate- release-notes :
82
+ needs : check- tag
80
83
runs-on : ubuntu-latest
81
84
steps :
82
- - uses : actions/checkout@v4
85
+ - uses : actions/checkout@v4.1.1
83
86
with :
84
87
fetch-depth : 0
85
- ref : refs/tags/${{ github.event.inputs.tag-name }}
86
88
87
89
- uses : actions/setup-python@v5.1.1
88
90
with :
89
91
python-version : ' 3.11'
90
92
91
- - name : Generate release notes
92
- id : release_notes_generator
93
+ - name : Generate Release Notes
94
+ id : generate_release_notes
93
95
uses : AbsaOSS/generate-release-notes@master
94
96
env :
95
97
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
96
98
with :
97
99
tag-name : ${{ github.event.inputs.tag-name }}
98
- chapters : |
99
- [
100
- {"title": "Breaking Changes 💥 ", "label": "breaking-change "},
101
- {"title": "New Features 🎉", "label": "feature"},
102
- {"title": "New Features 🎉 ", "label": "enhancement"},
103
- {"title": "Bugfixes 🛠", "label": "bug"}
104
- ]
100
+ chapters : ' [
101
+ {"title": "Breaking Changes 💥", "label": "breaking-change"},
102
+ {"title": "New Features 🎉 ", "label": "enhancement "},
103
+ {"title": "New Features 🎉", "label": "feature"},
104
+ {"title": "Bugfixes 🛠 ", "label": "bug"}
105
+ ] '
106
+ verbose : true
105
107
warnings : true
106
108
109
+
107
110
- name : Create and Push Tag
108
111
uses : actions/github-script@v7
109
112
with :
@@ -123,13 +126,13 @@ jobs:
123
126
github-token : ${{ secrets.GITHUB_TOKEN }}
124
127
tag-name : ${{ github.event.inputs.tag-name }}
125
128
126
- - name : Create draft release
129
+ - name : Create Draft Release
127
130
uses : softprops/action-gh-release@v1
128
131
env :
129
132
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
130
133
with :
131
134
name : ${{ github.event.inputs.tag-name }}
132
- body : ${{ steps.release_notes_generator .outputs.release-notes }}
135
+ body : ${{ steps.generate_release_notes .outputs.release-notes }}
133
136
tag_name : ${{ github.event.inputs.tag-name }}
134
137
draft : true
135
138
prerelease : false
0 commit comments