1.46.0-guance #55
Workflow file for this run
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
name: Update issues on release | |
on: | |
release: | |
types: [released] | |
workflow_dispatch: | |
inputs: | |
milestone: | |
required: true | |
default: "0.0.0" | |
jobs: | |
update_issues: | |
permissions: | |
issues: write # Required to update issues | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get milestone for release | |
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # 7.0.1 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
// Get release milestone name | |
const milestoneName = "${{github.event_name}}" == "workflow_dispatch" ? | |
"${{github.event.inputs.milestone}}" : | |
"${{github.event.release.name}}" | |
// Get release URL | |
const releaseURL = "${{github.event_name}}" == "workflow_dispatch" ? | |
"${{github.event.repository.html_url}}/releases/tag/v${{github.event.release.name}}" : | |
"${{github.event.release.html_url}}" | |
core.info(`Notify of release availability: v${milestoneName}`) | |
// Get release milestone number | |
const milestoneNumber = await github.paginate(github.rest.issues.listMilestones, { | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
state: 'all' | |
}, (response, done) => { | |
const releaseMilestone = response.data.find(milestone => milestone.title == milestoneName) | |
if (releaseMilestone) { | |
done() | |
return releaseMilestone.number | |
} | |
}).then(milestones => milestones.pop()) | |
if (!milestoneNumber) { | |
core.setFailed(`Failed to find milestone: ${milestoneName}`) | |
return | |
} | |
// Get all release milestone issues | |
const issues = await github.paginate(github.rest.issues.listForRepo, { | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
state: 'all', | |
milestone: milestoneNumber | |
}, (response) => response.data.filter(issue => !issue["pull_request"])) | |
// Comment and close issues | |
for (const issue of issues) { | |
core.info(issue.state == 'open' ? | |
`Commenting and closing issue ${issue.number}` : | |
`Commenting on closed issue ${issue.number}`) | |
await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: issue.number, | |
body: `:robot: This issue has been addressed in the latest release. Check full details in the [Release Notes](${releaseURL}).` | |
}) | |
if (issue.state == 'open') { | |
await github.rest.issues.update({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: issue.number, | |
state: 'closed' | |
}) | |
} | |
} |