Skip to content

Increment milestones on tag #733

Increment milestones on tag

Increment milestones on tag #733

name: Increment milestones on tag
on:
create
permissions:
contents: read
issues: write
jobs:
increment_milestone:
if: github.event.ref_type == 'tag' && github.event.master_branch == 'main'
runs-on: ubuntu-latest
steps:
- name: Get milestone title
id: milestoneTitle
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # 9.0.0
with:
result-encoding: string
script: |
// Our tags are of the form v_X.X.X and milestones don't have the "v"
return '${{github.event.ref}}'.startsWith('v_') ? '${{github.event.ref}}'.substring(2) : '${{github.event.ref}}';
- name: Get milestone for tag
id: milestone
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # 9.0.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const milestones = await github.paginate(github.rest.issues.listMilestones, {
owner: context.repo.owner,
repo: context.repo.repo,
state: 'all'
})
const milestone = milestones.find(milestone => milestone.title == '${{steps.milestoneTitle.outputs.result}}')
if (milestone) {
return milestone.number
} else {
return null
}
- name: Close milestone
if: fromJSON(steps.milestone.outputs.result)
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # 9.0.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
await github.rest.issues.updateMilestone({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'closed',
milestone_number: ${{steps.milestone.outputs.result}}
})
- name: Get next minor version
if: fromJSON(steps.milestone.outputs.result)
id: semvers
env:
MILESTONE_TITLE: ${{ steps.milestoneTitle.outputs.result }}
run: |
MAJOR=$(echo "$MILESTONE_TITLE" | cut -d. -f1)
MINOR=$(echo "$MILESTONE_TITLE" | cut -d. -f2)
echo "minor=${MAJOR}.$((MINOR + 1)).0" >> "$GITHUB_OUTPUT"
- name: Create next milestone
if: fromJSON(steps.milestone.outputs.result)
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # 9.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
await github.rest.issues.createMilestone({
owner: context.repo.owner,
repo: context.repo.repo,
title: '${{ steps.semvers.outputs.minor }}'
})