如何基于规则实现GitLab MR标题检查自动化?
GitLab MR标题检查自动化实现方案(基于流水线)
完全可以通过GitLab流水线实现MR标题检查的自动化,具体步骤如下:
1. 编写标题检查脚本
根据你制定的标题规则,编写Shell或Python脚本用于校验MR标题。以下是Shell脚本示例(假设规则为:标题必须以feat/fix/docs/refactor/chore开头,后跟冒号和空格):
#!/bin/bash MR_TITLE="$1" # 定义标题匹配的正则规则 VALID_PATTERN="^(feat|fix|docs|refactor|chore): .+" if [[ ! "$MR_TITLE" =~ $VALID_PATTERN ]]; then echo "❌ MR标题不符合规则!" echo "要求格式:前缀: 标题内容,前缀可选值为feat/fix/docs/refactor/chore" echo "示例:feat: 添加用户中心页面" exit 1 else echo "✅ MR标题符合规则" exit 0 fi
将脚本保存为check_mr_title.sh,并赋予执行权限:chmod +x check_mr_title.sh
2. 配置GitLab流水线
在项目根目录创建.gitlab-ci.yml文件,添加专门的校验job,触发条件设置为MR创建或更新时:
check-mr-title: stage: test script: - ./check_mr_title.sh "$CI_MR_TITLE" # 仅在MR事件触发时运行 only: - merge_requests # 可选:排除主分支直接提交(按需设置) except: - main
GitLab CI内置变量CI_MR_TITLE会自动传入当前MR的标题,无需额外配置。
3. 设置MR合并强制条件
进入项目的Settings > Merge requests > Merge checks页面,勾选Pipeline must succeed选项。这样只有标题校验通过(流水线成功)的MR才能被合并,从流程上强制规范标题格式。
如果你的标题规则更复杂(比如关键词限制、长度要求等),可以修改脚本中的正则表达式,或改用Python等语言编写更灵活的校验逻辑。
内容的提问来源于stack exchange,提问作者Rom098
相关产品推荐
相关产品推荐

