logo
1
1
WeChat Login
docs: 完善 README.txt

Commit Lint 检查

本项目提供了两种方式在 CNB 中对 Pull Request 的 commit 进行规范检查。

方式一:使用 cnbcool/commitlint 镜像

配置方法

.cnb.yml 文件中添加以下配置:

main: pull_request: - stages: - name: commitlint image: cnbcool/commitlint

特点

  • 开箱即用:无需额外配置,使用标准的 commitlint 规则
  • 轻量级:使用官方维护的 Docker 镜像
  • 标准规范:遵循 Conventional Commits 规范
  • 维护成本低:由 cnbcool 团队维护更新

支持的 Commit 格式

<type>[optional scope]: <description> [optional body] [optional footer(s)]

常见的 type 包括:

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 重构
  • test: 测试相关
  • chore: 构建过程或辅助工具的变动

方式二:自定义脚本检查

配置方法

.cnb.yml 文件中添加以下配置:

main: pull_request: - stages: - name: 自定义 commitlint script: .ci/git_commit_check.sh

特点

  • 高度定制:可以根据团队需求定制检查规则
  • 多维度校验:支持 commit 消息、用户名、邮箱等多维度检查
  • 企业级规范:支持与 TAPD 等项目管理工具集成
  • 灵活配置:可以配置白名单、豁免规则等

检查规则

1. Commit 消息格式

<前缀>/<描述> --story=需求ID 或 --task=任务ID 或 --bug=缺陷ID

支持的前缀:

  • feature: 新功能
  • fix: 修复问题
  • doc: 文档更新
  • update: 更新
  • style: 样式调整
  • chore: 杂项
  • refactor: 重构
  • test: 测试
  • release: 发布
  • uat: UAT 相关
  • ui/UI: UI 相关

示例:

feature/用户登录功能 --story=12345 fix/修复登录bug --bug=67890 test/添加单元测试 --task=54321

2. 用户名校验

  • 支持字母、数字、点、下划线、连字符的组合
  • 正则表达式:^[a-zA-Z0-9._-]+$

3. 邮箱校验

  • 检查邮箱后缀是否在白名单中
  • 白名单配置文件:.ci/email_suffixes.txt

配置文件

.ci/email_suffixes.txt

tencent.com

.ci/git_commit_check.sh

主要的检查脚本,包含所有校验逻辑。

豁免规则

  • 时间豁免:在配置的时间段内可以豁免检查
  • 特殊提交:Merge 和 Revert 提交会被自动豁免

使用建议

选择方式一的场景:

  • 团队刚开始使用 commit 规范
  • 希望使用标准的开源规范
  • 不需要复杂的定制化需求
  • 维护成本要求较低

选择方式二的场景:

  • 需要与企业内部系统集成(如 TAPD)
  • 有特定的 commit 格式要求
  • 需要多维度校验(用户名、邮箱等)
  • 需要灵活的豁免和配置规则

快速开始

  1. 克隆项目

    git clone <repository-url> cd commit-lint
  2. 选择检查方式

    • 编辑 .cnb.yml 文件
    • 取消注释对应的配置段
  3. 自定义配置(方式二)

    • 修改 .ci/email_suffixes.txt 添加允许的邮箱后缀
    • 根据需要调整 .ci/git_commit_check.sh 中的校验规则
  4. 提交测试

    git commit -m "test/测试提交 --task=123"