Skip to content

1.46.0-guance

1.46.0-guance #55

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'
})
}
}