@@ -119,7 +119,7 @@ jobs:
119
119
attestations : false # PENDING decision for attestations
120
120
121
121
github-release :
122
- name : Attach gem to GitHub release and publish
122
+ name : Attach gem to Github Release and publish
123
123
runs-on : ubuntu-24.04
124
124
needs :
125
125
- verify-checks
@@ -138,28 +138,26 @@ jobs:
138
138
gh release upload "v${GEM_VERSION}" *.gem --clobber
139
139
gh release edit "v${GEM_VERSION}" --draft=false
140
140
141
- bump-version-pull-request :
141
+ update-gem-version :
142
142
if : github.ref_name == 'master'
143
+ name : Pull request to update gem version
143
144
runs-on : ubuntu-24.04
144
145
needs :
145
146
- verify-checks
146
147
- rubygems-release
147
148
env :
148
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
149
+ GITHUB_TOKEN : ${{ secrets.GHA_PAT }}
149
150
GEM_VERSION : ${{ needs.verify-checks.outputs.version }}
150
-
151
+ outputs :
152
+ next_version : ${{ steps.next_version.outputs.next_version }}
151
153
permissions :
152
154
contents : write
153
155
pull-requests : write
154
-
155
156
steps :
156
- - uses : actions/checkout@v4
157
+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
157
158
with :
158
159
fetch-depth : 0
159
160
- run : bundle install
160
- - run : |
161
- git config user.name "${{ github.actor }}"
162
- git config user.email "${{ github.actor }}@users.noreply.github.com"
163
161
- run : |
164
162
git checkout -b version-bump-from-${{ github.job }}
165
163
- id : next_version
@@ -180,15 +178,107 @@ jobs:
180
178
--base master \
181
179
--head version-bump-from-${{ github.job }}
182
180
183
- document-pull-request :
181
+ # https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28
182
+ milestone :
184
183
if : github.ref_name == 'master'
184
+ name : Open/Close Github milestones
185
185
runs-on : ubuntu-24.04
186
186
needs :
187
187
- verify-checks
188
188
- rubygems-release
189
+ - update-gem-version
189
190
env :
190
191
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
191
192
GEM_VERSION : ${{ needs.verify-checks.outputs.version }}
193
+ NEXT_VERSION : ${{ needs.update-gem-version.outputs.next_version }}
194
+ permissions :
195
+ issues : write
196
+ pull-requests : write
197
+ steps :
198
+ - name : list milestones
199
+ id : milestones
200
+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
201
+ with :
202
+ script : |
203
+ // https://octokit.github.io/rest.js/v21/#issues-list-milestones
204
+ // https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28#list-milestones
205
+ const milestones = await github.rest.issues.listMilestones({
206
+ owner: context.repo.owner,
207
+ repo: context.repo.repo,
208
+ state: 'open'
209
+ });
210
+ return milestones.data;
211
+
212
+ - name : Close milestone
213
+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
214
+ with :
215
+ script : |
216
+ const milestones = ${{steps.milestones.outputs.result}}
217
+
218
+ const milestone = milestones.data.find(
219
+ m => m.title === process.env.GEM_VERSION
220
+ );
221
+
222
+ if (!milestone) {
223
+ console.log(`No open milestone found with version ${process.env.GEM_VERSION} - skipping close operation`);
224
+ return;
225
+ }
226
+
227
+ // https://octokit.github.io/rest.js/v21/#issues-update-milestone
228
+ // https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28#update-a-milestone
229
+ try {
230
+ await github.rest.issues.updateMilestone({
231
+ owner: context.repo.owner,
232
+ repo: context.repo.repo,
233
+ milestone_number: milestone.number,
234
+ state: 'closed'
235
+ });
236
+ console.log(`Successfully closed milestone: ${process.env.GEM_VERSION}`);
237
+ } catch (error) {
238
+ core.setFailed(`Failed to close milestone: ${error.message}`);
239
+ }
240
+
241
+ - name : Create milestone
242
+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
243
+ with :
244
+ script : |
245
+ const milestones = ${{steps.milestones.outputs.result}}
246
+
247
+ const milestone = milestones.data.find(
248
+ m => m.title === process.env.NEXT_VERSION
249
+ );
250
+
251
+ if (milestone) {
252
+ console.log(`Milestone "${process.env.NEXT_VERSION}" already exists - skipping creation`);
253
+ return;
254
+ }
255
+
256
+ // https://octokit.github.io/rest.js/v21/#issues-create-milestone
257
+ // https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28#create-a-milestone
258
+ try {
259
+ await github.rest.issues.createMilestone({
260
+ owner: context.repo.owner,
261
+ repo: context.repo.repo,
262
+ title: process.env.NEXT_VERSION
263
+ });
264
+ console.log(`Successfully created milestone: ${process.env.NEXT_VERSION}`);
265
+ } catch (error) {
266
+ core.setFailed(`Failed to create milestone: ${error.message}`);
267
+ }
268
+
269
+ update-release-branch :
270
+ if : github.ref_name == 'master'
271
+ name : Pull request to update 'release' branch
272
+ runs-on : ubuntu-24.04
273
+ needs :
274
+ - verify-checks
275
+ - rubygems-release
276
+ permissions :
277
+ issues : write
278
+ pull-requests : write
279
+ env :
280
+ GITHUB_TOKEN : ${{ secrets.GHA_PAT }}
281
+ GEM_VERSION : ${{ needs.verify-checks.outputs.version }}
192
282
steps :
193
283
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
194
284
with :
@@ -202,5 +292,3 @@ jobs:
202
292
--title "Update document v${GEM_VERSION}" \
203
293
--body "This is an auto-generated PR to update documentation from [here](${JOB_URL}). Please merge (with a merge commit) when ready." \
204
294
--label "docs"
205
-
206
- # TODO: Close existing milestone and create next milestone
0 commit comments