如何配置gitlab-ci.yml实现仅master分支触发CI流水线
报错原因
你出现配置报错的核心原因是:only关键字不支持直接写在.gitlab-ci.yml的全局顶级位置,该规则只能配置在单个job的层级下。如果需要全局控制整个流水线的触发条件,推荐使用workflow:rules配置,灵活性和兼容性更高。
正确实现方案
方案1:全局规则控制(推荐)
在配置顶部添加workflow规则,全流水线仅在master分支推送时触发,包括develop在内的其他所有分支推送都不会启动流水线,不需要每个job重复配置规则,配置示例如下:
# 全局流水线触发规则 workflow: rules: - if: $CI_COMMIT_BRANCH == "master" when: always - when: never stages: - info - build - test - review - cleanup - deploy-dev - integration-test - deploy-test - system-test - deploy-production # 后续正常编写各个job的配置即可,无需额外加触发规则
方案2:单job单独配置
如果只需要部分job符合触发规则,可以给每个需要控制的job单独添加only配置,示例如下:
stages: - info - build # 示例job1 info_job: stage: info script: - echo "打印环境信息" only: refs: - master # 示例job2 build_job: stage: build script: - echo "执行代码构建" only: refs: - master
内容的提问来源于stack exchange,提问作者Petziferum
相关产品推荐
相关产品推荐

