Skip to content

Commit ebca8a7

Browse files
authored
chore: add auto-label-pr action (#1520)
## Rationale Automatically label the pr based on the pr title. ## Detailed Changes Automatically label the pr based on the pr title. ## Test Plan Manual test.
1 parent dc38488 commit ebca8a7

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

.github/workflows/auto-label-pr.yml

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
name: Auto Label PRs Based on Title
19+
20+
on:
21+
pull_request_target:
22+
types: [opened, edited, synchronize]
23+
24+
permissions:
25+
pull-requests: write
26+
contents: read
27+
28+
jobs:
29+
label:
30+
runs-on: ubuntu-latest
31+
steps:
32+
- name: Checkout code
33+
uses: actions/checkout@v2
34+
35+
- name: Add Label Based on PR Title
36+
uses: actions/github-script@v4
37+
with:
38+
github-token: ${{secrets.GITHUB_TOKEN}}
39+
script: |
40+
const patternMap = {
41+
'!:': 'breaking-change',
42+
'feat:': 'feature',
43+
'fix:': 'bug',
44+
'docs:': 'docs',
45+
'refactor:': 'refactor',
46+
'chore:': 'chore'
47+
};
48+
const title = context.payload.pull_request.title.toLowerCase();
49+
const labelsToAdd = Object.entries(patternMap)
50+
.filter(([key, ]) => title.includes(key))
51+
.map(([, label]) => label);
52+
53+
if (labelsToAdd.length > 0) {
54+
await github.issues.addLabels({
55+
issue_number: context.issue.number,
56+
owner: context.repo.owner,
57+
repo: context.repo.repo,
58+
labels: labelsToAdd
59+
});
60+
}

0 commit comments

Comments
 (0)