1
- name : Add labels based on issue closure reason
1
+ name : Manage Labels on Issue Close
2
2
3
3
on :
4
4
issues :
5
5
types : [closed]
6
6
7
7
jobs :
8
- add -labels :
8
+ manage -labels :
9
9
runs-on : ubuntu-latest
10
10
steps :
11
- - name : Check if the issue was closed as completed and add label
11
+ - name : Handle labels based on close reason
12
12
uses : actions/github-script@v6
13
13
with :
14
14
github-token : ${{ secrets.BOT }}
15
15
script : |
16
- if (context.payload.issue.state_reason === 'completed') {
17
- await github.rest.issues.addLabels({
18
- owner: context.repo.owner,
19
- repo: context.repo.repo,
20
- issue_number: context.payload.issue.number,
21
- labels: ['👌 完成']
22
- });
23
- }
16
+ const { issue, repository } = context.payload;
17
+ const labelsToRemove = ['⭕ 等待处理', '🚧 正在处理'];
18
+ const closedReason = issue.state_reason;
24
19
25
- - name : Check if the issue was closed as duplicate and add label
26
- uses : actions/github-script@v6
27
- with :
28
- github-token : ${{ secrets.BOT }}
29
- script : |
30
- if (context.payload.issue.state_reason === 'duplicate') {
31
- await github.rest.issues.addLabels({
32
- owner: context.repo.owner,
33
- repo: context.repo.repo,
34
- issue_number: context.payload.issue.number,
35
- labels: ['❌ 重复']
36
- });
20
+ // 移除旧标签
21
+ for (const label of labelsToRemove) {
22
+ try {
23
+ await github.rest.issues.removeLabel({
24
+ owner: repository.owner.login,
25
+ repo: repository.name,
26
+ issue_number: issue.number,
27
+ name: label
28
+ });
29
+ } catch (error) {
30
+ if (error.status !== 404) throw error;
31
+ }
37
32
}
38
-
39
- - name : Check if the issue was closed as not planned and add label
40
- uses : actions/github-script@v6
41
- with :
42
- github-token : ${{ secrets.BOT }}
43
- script : |
44
- if (context.payload.issue.state_reason === 'not_planned') {
33
+
34
+ // 根据关闭原因添加新标签
35
+ const reasonMapping = {
36
+ 'completed': '👌 完成',
37
+ 'not_planned': '❌ 忽略',
38
+ 'duplicate': '❌ 重复'
39
+ };
40
+
41
+ if (reasonMapping[closedReason]) {
45
42
await github.rest.issues.addLabels({
46
- owner: context.repo. owner,
47
- repo: context.repo.repo ,
48
- issue_number: context.payload. issue.number,
49
- labels: ['❌ 忽略' ]
43
+ owner: repository. owner.login ,
44
+ repo: repository.name ,
45
+ issue_number: issue.number,
46
+ labels: [reasonMapping[closedReason] ]
50
47
});
51
- }
52
-
48
+ }
0 commit comments