Skip to content

Commit 0454c07

Browse files
authored
Merge pull request #112 from NotHimmel/v4.4
ci: add auto assign issue on command workflow
2 parents 7fd65b3 + 189abfe commit 0454c07

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: Auto Assign Issue on Command
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
7+
jobs:
8+
assign_on_command:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
issues: write
12+
contents: read
13+
steps:
14+
- name: Assign to user on /assign command
15+
uses: actions/github-script@v6
16+
with:
17+
github-token: ${{secrets.IVORY_TOKEN}}
18+
script: |
19+
const commentBody = context.payload.comment.body.trim().toLowerCase();
20+
const commenter = context.payload.comment.user.login;
21+
const issueNumber = context.issue.number;
22+
const repoOwner = context.repo.owner;
23+
const repoName = context.repo.repo;
24+
25+
if (commentBody === '/assign') {
26+
console.log(`User @${commenter} commented "/assign" on issue #${issueNumber}. Attempting to assign.`);
27+
28+
if (commenter.endsWith('[bot]') || commenter === 'github-actions[bot]') {
29+
console.log(`Skipping assignment for bot user: ${commenter}`);
30+
return;
31+
}
32+
33+
const { data: issue } = await github.rest.issues.get({
34+
owner: repoOwner,
35+
repo: repoName,
36+
issue_number: issueNumber
37+
});
38+
39+
if (issue.assignees && issue.assignees.some(a => a.login === commenter)) {
40+
console.log(`Issue #${issueNumber} is already assigned to @${commenter}. No action needed.`);
41+
return;
42+
}
43+
44+
if (issue.state === 'closed') {
45+
console.log(`Issue #${issueNumber} is closed. No assignment will be made.`);
46+
await github.rest.issues.createComment({
47+
owner: repoOwner,
48+
repo: repoName,
49+
issue_number: issueNumber,
50+
body: `Hi @${commenter}, issue #${issueNumber} is closed and cannot be assigned.`
51+
});
52+
return;
53+
}
54+
55+
try {
56+
await github.rest.issues.addAssignees({
57+
owner: repoOwner,
58+
repo: repoName,
59+
issue_number: issueNumber,
60+
assignees: [commenter]
61+
});
62+
console.log(`Successfully assigned issue #${issueNumber} to @${commenter}.`);
63+
} catch (error) {
64+
console.error(`Error assigning issue #${issueNumber} to @${commenter}:`, error);
65+
await github.rest.issues.createComment({
66+
owner: repoOwner,
67+
repo: repoName,
68+
issue_number: issueNumber,
69+
body: `Hi @${commenter}, I encountered an error trying to assign you to issue #${issueNumber}. Please check permissions or assign manually. \nError: ${error.message}`
70+
});
71+
}
72+
} else {
73+
console.log(`Comment by @${commenter} on issue #${issueNumber} was not an "/assign" command. Body: "${context.payload.comment.body.trim()}"`);
74+
}

0 commit comments

Comments
 (0)