Whenever a PR is merged , autoclose the issue #1
This file contains hidden or 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: Auto-close issues mentioned in merged PR | |
| on: | |
| pull_request_target: | |
| types: [closed] | |
| permissions: | |
| issues: write | |
| pull-requests: read | |
| jobs: | |
| auto-close-issues: | |
| runs-on: ubuntu-latest | |
| if: github.event.pull_request.merged == true | |
| steps: | |
| - name: Auto-close referenced issues | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const pr = context.payload.pull_request; | |
| // Combine PR title and body | |
| const text = `${pr.title}\n${pr.body || ""}`; | |
| // Match issue references like #12, #45 | |
| const issueNumbers = [...text.matchAll(/#(\d+)/g)] | |
| .map(match => match[1]); | |
| if (issueNumbers.length === 0) { | |
| console.log("No referenced issues found."); | |
| return; | |
| } | |
| for (const issueNumber of issueNumbers) { | |
| try { | |
| await github.rest.issues.update({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| state: "closed", | |
| }); | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issueNumber, | |
| body: `Closed automatically via merged PR #${pr.number}.`, | |
| }); | |
| console.log(`Closed issue #${issueNumber}`); | |
| } catch (error) { | |
| console.log( | |
| `Failed to close issue #${issueNumber}: ${error.message}` | |
| ); | |
| } | |
| } |