11name : Auto Label Pull Requests
22
33on :
4- pull_request :
4+ pull_request_target :
55 types :
66 - opened
77 - reopened
88 - synchronize
99
10- workflow_dispatch :
11-
1210permissions :
1311 pull-requests : write
12+ issues : write
1413
1514jobs :
16-
17- # ------------------------------------------------------------
18- # Auto-label new pull requests
19- # ------------------------------------------------------------
20- auto-label-new-prs :
21- if : github.event_name == 'pull_request'
15+ auto-label-prs :
2216 runs-on : ubuntu-latest
2317
2418 steps :
25- - name : Apply labels to PR
19+ - name : Apply PR labels
2620 uses : actions/github-script@v7
21+
2722 with :
2823 script : |
2924 const pr = context.payload.pull_request;
3025 const branch = pr.head.ref;
3126
32- let labels = ['gssoc-26'];
27+ let labels = ['gssoc-2026'];
28+
29+ // Difficulty labels
30+ if (branch.startsWith('level1/')) {
31+ labels.push('level:beginner');
32+ }
33+
34+ if (branch.startsWith('level2/')) {
35+ labels.push('level:intermediate');
36+ }
3337
34- if (branch.startsWith('fix /')) {
35- labels.push('bug ');
38+ if (branch.startsWith('level3 /')) {
39+ labels.push('level:advanced ');
3640 }
3741
38- if (branch.startsWith('feat /')) {
39- labels.push('enhancement ');
42+ if (branch.startsWith('level4 /')) {
43+ labels.push('level:critical ');
4044 }
4145
42- if (branch.startsWith('docs/')) {
43- labels.push('documentation');
46+ // Type labels
47+ if (branch.includes('feat/')) {
48+ labels.push('type:feature');
4449 }
4550
46- if (branch.startsWith('style /')) {
47- labels.push('ui ');
51+ if (branch.includes('fix /')) {
52+ labels.push('type:bug ');
4853 }
4954
50- if (branch.startsWith('test /')) {
51- labels.push('testing ');
55+ if (branch.includes('docs /')) {
56+ labels.push('type:docs ');
5257 }
5358
54- if (branch.startsWith('refactor/')) {
55- labels.push('refactor');
59+ if (branch.includes('refactor/')) {
60+ labels.push('type:refactor');
61+ }
62+
63+ if (branch.includes('test/')) {
64+ labels.push('type:testing');
65+ }
66+
67+ if (branch.includes('style/')) {
68+ labels.push('type:design');
5669 }
5770
5871 await github.rest.issues.addLabels({
5972 owner: context.repo.owner,
6073 repo: context.repo.repo,
6174 issue_number: pr.number,
6275 labels
63- });
64-
65- # ------------------------------------------------------------
66- # Apply labels to ALL existing PRs
67- # ------------------------------------------------------------
68- label-existing-prs :
69- if : github.event_name == 'workflow_dispatch'
70- runs-on : ubuntu-latest
71-
72- steps :
73- - name : Label all existing PRs
74- uses : actions/github-script@v7
75- with :
76- script : |
77- const pulls = await github.paginate(
78- github.rest.pulls.list,
79- {
80- owner: context.repo.owner,
81- repo: context.repo.repo,
82- state: 'all'
83- }
84- );
85-
86- for (const pr of pulls) {
87-
88- const branch = pr.head.ref;
89- let labels = ['gssoc-26'];
90-
91- if (branch.startsWith('fix/')) {
92- labels.push('bug');
93- }
94-
95- if (branch.startsWith('feat/')) {
96- labels.push('enhancement');
97- }
98-
99- if (branch.startsWith('docs/')) {
100- labels.push('documentation');
101- }
102-
103- if (branch.startsWith('style/')) {
104- labels.push('ui');
105- }
106-
107- if (branch.startsWith('test/')) {
108- labels.push('testing');
109- }
110-
111- if (branch.startsWith('refactor/')) {
112- labels.push('refactor');
113- }
114-
115- await github.rest.issues.addLabels({
116- owner: context.repo.owner,
117- repo: context.repo.repo,
118- issue_number: pr.number,
119- labels
120- });
121-
122- console.log(`Labels added to PR #${pr.number}`);
123- }
76+ });
0 commit comments