File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments