mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2025-12-13 13:11:43 +00:00
ci: auto add PR label workflow and script (#466)
* ci: add auto PR label workflow and script Signed-off-by: Andy Lee <andy.lee@suse.com> * fix: bug fix prefix Signed-off-by: Andy Lee <andy.lee@suse.com> * refactor: update label mapping Signed-off-by: Andy Lee <andy.lee@suse.com> * refactor: read commitlint prefix from commitlint.config.js Signed-off-by: Andy Lee <andy.lee@suse.com> * refactor: rename to scripts/extract-release-label.mjs Signed-off-by: Andy Lee <andy.lee@suse.com> --------- Signed-off-by: Andy Lee <andy.lee@suse.com> (cherry picked from commit ea5e9aa1f41f875fd4e42c0accbb904bd032f570)
This commit is contained in:
parent
fa78229d3a
commit
80a67bba3d
33
.github/workflows/release-label.yaml
vendored
Normal file
33
.github/workflows/release-label.yaml
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
name: "[PR Management] Add PR Label"
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened, reopened]
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- 'release-harvester-v*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
auto-assign-pr-label:
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ github.base_ref }}
|
||||||
|
- name: Setup Nodejs with yarn caching
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: yarn
|
||||||
|
- name: Set PR label
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
PR_LABEL=$(node ./scripts/extract-pr-label.js "${{ github.event.pull_request.title }}")
|
||||||
|
echo "PR_LABEL = $PR_LABEL"
|
||||||
|
gh pr edit ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --add-label "$PR_LABEL"
|
||||||
@ -46,6 +46,7 @@
|
|||||||
"prepare": "husky"
|
"prepare": "husky"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@commitlint/load": "^19.8.1",
|
||||||
"@commitlint/cli": "^19.8.1",
|
"@commitlint/cli": "^19.8.1",
|
||||||
"@commitlint/config-conventional": "^19.8.1",
|
"@commitlint/config-conventional": "^19.8.1",
|
||||||
"eslint-plugin-node": "^11.1.0",
|
"eslint-plugin-node": "^11.1.0",
|
||||||
|
|||||||
16
scripts/extract-release-label.mjs
Normal file
16
scripts/extract-release-label.mjs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/* eslint-disable no-console */
|
||||||
|
import load from "@commitlint/load";
|
||||||
|
|
||||||
|
if (process.argv.length < 3) {
|
||||||
|
console.error('No PR title as first argument');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const prTitle = process.argv[2];
|
||||||
|
const prLabel = prTitle.split(':')[0].trim();
|
||||||
|
|
||||||
|
const config = await load({ extends: ["./commitlint.config.js"] });
|
||||||
|
const commitPrefix = config?.rules?.['type-enum']?.[2] || [];
|
||||||
|
const label = commitPrefix.includes(prLabel) ? prLabel : 'other';
|
||||||
|
|
||||||
|
console.log(label);
|
||||||
Loading…
x
Reference in New Issue
Block a user