action-semantic-pull-request 项目教程
1. 项目的目录结构及介绍
action-semantic-pull-request/
├── dist/
│ └── ...
├── src/
│ └── ...
├── .eslintrc.js
├── .gitignore
├── .releaserc.json
├── CHANGELOG.md
├── CONTRIBUTORS.md
├── LICENSE
├── README.md
├── action.yml
├── index.js
├── package.json
└── yarn.lock
目录结构介绍
- dist/: 存放编译后的文件。
- src/: 存放源代码文件。
- .eslintrc.js: ESLint 配置文件,用于代码风格检查。
- .gitignore: Git 忽略文件配置。
- .releaserc.json: 发布配置文件。
- CHANGELOG.md: 项目变更日志。
- CONTRIBUTORS.md: 项目贡献者列表。
- LICENSE: 项目许可证。
- README.md: 项目说明文档。
- action.yml: GitHub Action 配置文件。
- index.js: 项目入口文件。
- package.json: 项目依赖和脚本配置文件。
- yarn.lock: Yarn 依赖锁定文件。
2. 项目的启动文件介绍
index.js
index.js
是项目的入口文件,负责初始化和执行 GitHub Action 的主要逻辑。它包含了验证 Pull Request 标题是否符合 Conventional Commits 规范的代码。
// index.js 文件内容示例
const { run } = require('./src/main');
run();
主要功能
- 初始化: 加载配置并初始化 GitHub Action。
- 验证: 检查 Pull Request 标题是否符合 Conventional Commits 规范。
- 输出结果: 根据验证结果输出相应的信息。
3. 项目的配置文件介绍
action.yml
action.yml
是 GitHub Action 的配置文件,定义了 Action 的输入、输出、运行环境等信息。
name: "Lint PR"
on:
pull_request_target:
types: [opened, edited, synchronize, reopened]
permissions:
pull-requests: read
jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: $[[ secrets.GITHUB_TOKEN ]]
主要配置项
- name: Action 的名称。
- on: 触发 Action 的事件类型。
- permissions: 定义 Action 的权限。
- jobs: 定义工作流程,包括运行的步骤和环境。
package.json
package.json
是 Node.js 项目的配置文件,包含了项目的依赖、脚本等信息。
{
"name": "action-semantic-pull-request",
"version": "5.5.3",
"description": "A GitHub Action that ensures that your PR title matches the Conventional Commits spec",
"main": "index.js",
"scripts": {
"build": "tsc",
"test": "jest"
},
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/github": "^4.0.0"
},
"devDependencies": {
"@types/jest": "^26.0.20",
"jest": "^26.6.3"
}
}
主要配置项
- name: 项目名称。
- version: 项目版本。
- main: 项目入口文件。
- scripts: 定义项目的脚本命令。
- dependencies: 项目依赖的包。
- devDependencies: 开发环境依赖的包。
通过以上配置文件和目录结构,action-semantic-pull-request
项目能够有效地验证 Pull Request 标题是否符合 Conventional Commits 规范,并自动化发布流程。