Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 663edd4

Browse files
Create prevent_multiple_issues.yml
1 parent d06f742 commit 663edd4

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Close Issue if Opener has Opened Issues
2+
3+
on:
4+
issues:
5+
types:
6+
- opened
7+
8+
jobs:
9+
close_issue:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Check if opener has multiple open issues
14+
id: check_open_issues
15+
uses: actions/github-script@v4
16+
with:
17+
github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
18+
script: |
19+
const owner = context.repo.owner;
20+
const repo = context.repo.repo;
21+
const issueNumber = context.issue.number;
22+
const issueOpener = context.payload.issue.user.login;
23+
24+
const previousIssuesResponse = await github.request('GET /repos/{owner}/{repo}/issues', {
25+
owner,
26+
repo,
27+
state: 'open',
28+
creator: issueOpener
29+
});
30+
31+
const previousOpenIssues = previousIssuesResponse.data.filter(issue => issue.number !== issueNumber && !issue.pull_request);
32+
const previousOpenIssueNumbers = previousOpenIssues.map(issue => `#${issue.number}`);
33+
const openerName = context.payload.issue.user.login;
34+
35+
const closeIssue = previousOpenIssues.length > 0;
36+
console.log(`Close issue: ${closeIssue}`);
37+
38+
if (closeIssue) {
39+
const comment = `Hey @${openerName} , You can't have another issue before completing the previous one 😀 \n you already have the following ${previousOpenIssues.length} open issues 👀 ! :\n\n${previousOpenIssueNumbers.join('\n')}`;
40+
core.exportVariable('comment_body', comment); // Export the variable
41+
core.setOutput('close_issue', true);
42+
} else {
43+
core.exportVariable('comment_body', '');
44+
core.setOutput('close_issue', false);
45+
}
46+
47+
- name: Close the issue and add a comment
48+
if: always() && ${{ needs.check_open_issues.outputs.close_issue }}
49+
uses: actions/github-script@v4
50+
with:
51+
github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
52+
script: |
53+
const owner = context.repo.owner;
54+
const repo = context.repo.repo;
55+
const issueNumber = context.issue.number;
56+
const comment = process.env.comment_body; // Retrieve the exported variable
57+
58+
if (comment.trim() === '') {
59+
console.log('Comment body is empty. Skipping comment creation.');
60+
return;
61+
}
62+
63+
const closeComment = `${comment}`;
64+
65+
await github.issues.createComment({
66+
owner,
67+
repo,
68+
issue_number: issueNumber,
69+
body: closeComment
70+
});
71+
72+
await github.issues.update({
73+
owner,
74+
repo,
75+
issue_number: issueNumber,
76+
state: 'closed'
77+
});

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /