diff --git a/.github/workflows/assign-milestone-on-close.yml b/.github/workflows/assign-milestone-on-close.yml new file mode 100644 index 00000000000..a849caad70f --- /dev/null +++ b/.github/workflows/assign-milestone-on-close.yml @@ -0,0 +1,41 @@ +name: Assign Milestone on Close + +env: + MILESTONE_ID: ${{ vars.MILESTONE_ID }} + +on: + issues: + types: [closed] + pull_request: + types: [closed] + +jobs: + assign-milestone: + runs-on: ubuntu-latest + steps: + - name: Check if milestone is set + id: check-milestone + uses: actions/github-script@v7 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const issueOrPr = context.payload.issue || context.payload.pull_request; + if (!issueOrPr.milestone) { + core.setOutput('milestoneNotSet', 'true'); + } else { + core.setOutput('milestoneNotSet', 'false'); + } + + - name: Assign default milestone + if: steps.check-milestone.outputs.milestoneNotSet == 'true' + uses: actions/github-script@v7 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const issueOrPrNumber = (context.payload.issue || context.payload.pull_request).number; + const repository = context.repo; + await github.rest.issues.update({ + ...repository, + issue_number: issueOrPrNumber, + milestone: process.env.MILESTONE_ID + });