多分支GitLab配置仅master触发CI/CD的相关问题
.gitlab-ci.yml 仅master分支触发的配置方法
直接在项目根目录创建.gitlab-ci.yml文件,推荐使用GitLab新版支持的workflow:rules做全局触发控制,配置完成后提交到master分支即可,示例配置如下:
# 全局流水线触发规则,所有CI任务默认继承该规则 workflow: rules: # 仅当提交目标分支为master时触发流水线 - if: $CI_COMMIT_BRANCH == "master" # 下方按需添加你的构建、部署等CI任务即可 build: script: - echo "这里写你的构建执行命令"
如果你的GitLab版本较老不支持workflow:rules,可以使用兼容的only语法做全局配置:
default: only: - master build: script: - echo "这里写你的构建执行命令"
是否需要在所有分支编辑该yml配置?
不需要,完全不用逐个修改所有存量分支的文件,原因和操作方案如下:
- GitLab触发流水线时,默认会读取当前提交所在分支的
.gitlab-ci.yml做规则判断。只要你把正确配置了仅master触发规则的yml提交到master,后续从master切出的新分支都会自带这份配置,提交到这些新分支时,规则判断会直接判定不满足触发条件,不会执行流水线。 - 针对已经存在的、包含旧版CI配置的历史分支,你不需要逐个分支修改配置,只需要进入项目的设置 > CI/CD > 流水线页面,找到「CI/CD配置文件」的自定义路径配置项,填入
master:.gitlab-ci.yml后保存。配置生效后,无论代码提交到哪个分支,GitLab都会固定读取master分支上的.gitlab-ci.yml做触发规则判断,从根源上避免非master分支触发流水线。
补充说明:如果你额外配置了合并请求触发流水线的规则,记得同步在rules里加上对应分支判断,避免非master分支的合并请求触发流水线。
内容的提问来源于stack exchange,提问作者Sultan Zhumatayev
相关产品推荐
相关产品推荐

