47 lines
1.6 KiB
YAML
47 lines
1.6 KiB
YAML
name: "Auto Label Conventional Commits"
|
|
on:
|
|
issues:
|
|
types: [opened]
|
|
pull_request:
|
|
types: [opened]
|
|
jobs:
|
|
label_issues:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
issues: write
|
|
pull-requests: write
|
|
steps:
|
|
- uses: actions/labeler@v4
|
|
with:
|
|
script: |
|
|
const github = require('@actions/github');
|
|
const core = require('@actions/core');
|
|
const token = core.getInput('github-token', { required: true });
|
|
const octokit = github.getOctokit(token);
|
|
|
|
const title = context.payload.issue ? context.payload.issue.title : context.payload.pull_request.title;
|
|
const labelMapping = {
|
|
'feat:': 'type: feature request',
|
|
'perf:': 'type: enhancement',
|
|
'fix:': 'type: bug',
|
|
'docs:': 'type: documentation',
|
|
'ci:': 'type: ci',
|
|
'build:': 'type: ci',
|
|
'chore:': 'type: chore',
|
|
'test:': 'type: chore',
|
|
'style:': 'type: chore',
|
|
'refactor:': 'type: chore',
|
|
};
|
|
for (const [prefix, label] of Object.entries(labelMapping)) {
|
|
if (title.startsWith(prefix)) {
|
|
const issue_number = context.payload.issue ? context.issue.number : context.payload.pull_request.number;
|
|
octokit.issues.addLabels({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: issue_number,
|
|
labels: [label],
|
|
});
|
|
break;
|
|
}
|
|
}
|