一、背景
- 背景:当前合并代码方式人工干预较多,需要制订一套规范代码提交流程
- 目标群体:使用
gitlab
的开发人员 - 技术应用场景:
gitlab
代码提交检测 - 整体思路:编写
gitlab ci-cd
脚本
二、需求
代码提交规范检测
- 开发人员合并代码触发 pipeline
- 需要触发检测脚本:检查
CHANGELOG.md
文件是否有做变更操作,如果没有做变更操作,则pipeline
抛出异常 - 合并页面需要结合
pipeline
运行结果,当流水线失败时,则合并操作不允
三、解决方案
- 检查
CHANGELOG.md
文件是否有做更改
#!/usr/bin/env bash
set -o errexit
set -o pipefail
set +e
files=$(git show --raw ${CI_COMMIT_SHA} --name-only --diff-filter=ACM | grep -E -i "CHANGELOG.md")
if [[ "${files}" = "" ]]; then
echo "Error: 未发现 CHANGELOG.md 文件变更,请'添加'或'修改'CHANGELOG.md" >&2
exit 1
else
echo -e "变更如下:\n${files}"
fi
- 编写流水线文件
stages:
- changelog
check-code-job:
stage: changelog
script:
- echo "Check the code changelog:"
# 脚本路径
- hack/verify-changelog.sh
# 当有 请求合并 时出发
only:
- merge_request
- 配置合并请求策略,必须等待流水线步骤执行成功,才能提供合并按钮