mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-25 00:37:24 +08:00
ci: 添加 PR 提交规范检查和 commitlint
- 添加 commitlint 及 Conventional Commits 规范配置 - 添加 commit-msg husky hook 本地校验提交信息 - 添加 GitHub Actions PR 检查 workflow: - PR 标题符合 Conventional Commits - 所有 commit message 符合规范 - ESLint + TypeScript 类型检查 + i18n 检查
This commit is contained in:
@@ -0,0 +1,71 @@
|
|||||||
|
name: PR Check
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [main, dev_electron]
|
||||||
|
types: [opened, edited, synchronize, reopened]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# 检查 PR 标题是否符合 Conventional Commits 规范
|
||||||
|
pr-title:
|
||||||
|
name: PR Title
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
|
||||||
|
- name: Install commitlint
|
||||||
|
run: npm install --no-save @commitlint/cli @commitlint/config-conventional
|
||||||
|
|
||||||
|
- name: Validate PR title
|
||||||
|
env:
|
||||||
|
PR_TITLE: ${{ github.event.pull_request.title }}
|
||||||
|
run: echo "$PR_TITLE" | npx commitlint
|
||||||
|
|
||||||
|
# 检查所有提交信息是否符合 Conventional Commits 规范
|
||||||
|
commit-messages:
|
||||||
|
name: Commit Messages
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
|
||||||
|
- name: Install commitlint
|
||||||
|
run: npm install --no-save @commitlint/cli @commitlint/config-conventional
|
||||||
|
|
||||||
|
- name: Validate commit messages
|
||||||
|
run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
|
||||||
|
|
||||||
|
# 运行 lint 和类型检查
|
||||||
|
code-quality:
|
||||||
|
name: Code Quality
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Lint
|
||||||
|
run: npx eslint --max-warnings 0 "src/**/*.{ts,tsx,vue,js}"
|
||||||
|
|
||||||
|
- name: Type check
|
||||||
|
run: npm run typecheck
|
||||||
|
|
||||||
|
- name: I18n check
|
||||||
|
run: npm run lint:i18n
|
||||||
Executable
+1
@@ -0,0 +1 @@
|
|||||||
|
npx --no -- commitlint --edit "$1"
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: ['@commitlint/config-conventional'],
|
||||||
|
rules: {
|
||||||
|
'type-enum': [
|
||||||
|
2,
|
||||||
|
'always',
|
||||||
|
['feat', 'fix', 'perf', 'refactor', 'docs', 'style', 'test', 'build', 'ci', 'chore', 'revert']
|
||||||
|
],
|
||||||
|
'subject-empty': [2, 'never'],
|
||||||
|
'type-empty': [2, 'never']
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -61,6 +61,8 @@
|
|||||||
"vue-i18n": "^11.2.2"
|
"vue-i18n": "^11.2.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@commitlint/cli": "^20.5.0",
|
||||||
|
"@commitlint/config-conventional": "^20.5.0",
|
||||||
"@electron-toolkit/eslint-config": "^2.1.0",
|
"@electron-toolkit/eslint-config": "^2.1.0",
|
||||||
"@electron-toolkit/eslint-config-ts": "^3.1.0",
|
"@electron-toolkit/eslint-config-ts": "^3.1.0",
|
||||||
"@electron-toolkit/tsconfig": "^1.0.1",
|
"@electron-toolkit/tsconfig": "^1.0.1",
|
||||||
|
|||||||
Reference in New Issue
Block a user