Skip to content

Commit fa9c075

Browse files
authored
chore: add GitHub Action workflow to close issues after merging to "next" (#1115)
1 parent 5ea792b commit fa9c075

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

.github/workflows/close-issues.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Close Issues on PR Merge to Next
2+
3+
on:
4+
pull_request:
5+
types:
6+
- closed
7+
8+
jobs:
9+
close_issues:
10+
if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'next'
11+
runs-on: ubuntu-latest
12+
permissions:
13+
issues: write
14+
pull-requests: read
15+
16+
steps:
17+
- name: Parse and close linked issues
18+
uses: actions/github-script@v7
19+
with:
20+
script: |
21+
const body = context.payload.pull_request.body || "";
22+
const closedIssues = new Set();
23+
const issueRegex = /(Closes|Fixes|Resolves)\s*:?\s+#(\d+)/gi;
24+
let match;
25+
26+
while ((match = issueRegex.exec(body)) !== null) {
27+
const issueNumber = Number(match[2]);
28+
if (!closedIssues.has(issueNumber)) {
29+
closedIssues.add(issueNumber);
30+
try {
31+
await github.rest.issues.update({
32+
owner: context.repo.owner,
33+
repo: context.repo.repo,
34+
issue_number: issueNumber,
35+
state: 'closed'
36+
});
37+
console.log(`Closed issue #${issueNumber}`);
38+
} catch (e) {
39+
console.error(`Could not automatically close issue #${issueNumber}. Skipping issue.`);
40+
}
41+
}
42+
}
43+
44+
if (closedIssues.size === 0) {
45+
console.log("No issues found to close.");
46+
}

0 commit comments

Comments
 (0)