-
Notifications
You must be signed in to change notification settings - Fork 292
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Improve milestone automation (#7553)
Rewrite milestone update on tag Add workflow testing Update README
- Loading branch information
1 parent
aae44c7
commit efc6f52
Showing
8 changed files
with
107 additions
and
69 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
name: Increment milestones on tag | ||
on: | ||
create | ||
permissions: | ||
issues: write # Required to update milestones | ||
|
||
jobs: | ||
increment_milestone: | ||
if: github.event.ref_type == 'tag' && contains(github.event.ref,'-RC') == false | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Close current milestone | ||
id: close-milestone | ||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # 7.0.1 | ||
with: | ||
script: | | ||
// Get the milestone title ("X.Y.Z") from tag name ("vX.Y.Z") | ||
const match = '${{github.event.ref}}'.match(/v(\d+\.\d+\.\d+)/i) | ||
if (!match) { | ||
core.setFailed('Failed to parse tag name into milestone title: ${{github.event.ref}}') | ||
return | ||
} | ||
const milestoneTitle = match[1] | ||
// Look for the milestone from its title | ||
const response = await github.rest.issues.listMilestones({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
state: 'open' | ||
}) | ||
if (!response.data || response.data.length == 0) { | ||
core.setFailed(`Failed to list milestones: ${response.status}`) | ||
return | ||
} | ||
const milestone = response.data.find(milestone => milestone.title == milestoneTitle) | ||
if (!milestone) { | ||
core.setFailed(`Failed to find milestone: ${milestoneTitle}`) | ||
return | ||
} | ||
// Close the milestone | ||
await github.rest.issues.updateMilestone({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
state: 'closed', | ||
milestone_number: milestone.number | ||
}).catch(error => { | ||
core.setFailed(`Failed to close milestone: ${error}`) | ||
}) | ||
// Compute the next milestone version | ||
const versionNumbers = milestoneTitle.split('.').map(Number) | ||
if (versionNumbers[2] != 0) { | ||
core.info('Closing a patch version milestone. Not opening a new one.') | ||
return | ||
} | ||
versionNumbers[1]++ | ||
const nextMilestoneTitle = versionNumbers.join('.') | ||
core.info(`Creating next version milestone: ${nextMilestoneTitle}`) | ||
// Create the next milestone | ||
await github.issues.createMilestone({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
title: nextMilestoneTitle | ||
}).catch(error => { | ||
core.setFailed(`Failed to create milestone ${nextMilestoneTitle}: ${error}`) | ||
}) |
This file was deleted.
Oops, something went wrong.
9 changes: 9 additions & 0 deletions
9
.github/workflows/tests/add-milestone-to-pull-requests/payload.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
{ | ||
"pull_request": { | ||
"number": 7549, | ||
"base": { | ||
"ref": "master" | ||
}, | ||
"merged": true | ||
} | ||
} |
3 changes: 3 additions & 0 deletions
3
.github/workflows/tests/add-milestone-to-pull-requests/test.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/bash | ||
source $(dirname "$0")/../env.sh | ||
act pull_request --workflows .github/workflows/add-milestone-to-pull-requests.yaml --eventpath .github/workflows/tests/add-milestone-to-pull-requests/payload.json $COMMON_ACT_ARGS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#!/bin/sh | ||
|
||
# Move to project root directory | ||
FILE_PATH=$(dirname "$0") | ||
cd $FILE_PATH/../../../../ | ||
|
||
export COMMON_ACT_ARGS="--container-architecture linux/amd64 --secret GITHUB_TOKEN="$(gh auth token)" --verbose" |
4 changes: 4 additions & 0 deletions
4
.github/workflows/tests/increment-milestone-on-tag/payload.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"ref_type": "tag", | ||
"ref": "v1.40.0" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/bash | ||
source $(dirname "$0")/../env.sh | ||
act create --workflows .github/workflows/increment-milestone-on-tag.yaml --eventpath .github/workflows/tests/increment-milestone-on-tag/payload.json $COMMON_ACT_ARGS |