如何在Gitlab中基于流水线变量配置运行CI/CD作业?
报错原因
GitLab CI 中 rules 与旧版的 only/except 为互斥关键字,不允许在同一个作业的配置中同时使用,这就是你收到报错的直接原因。你只需要将原有 only 定义的触发逻辑全部迁移到 rules 规则中,就能实现完全一致的需求。
修正后的配置
你原有配置的需求是:仅在 master 分支、其他普通分支流水线触发作业,且排除 my-featured-branch 分支,调整后的配置如下:
build-dev: stage: build rules: - if: '$CI_COMMIT_BRANCH == "my-featured-branch"' when: never - if: '$CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH' when: always
规则说明
rules按照从上到下的顺序匹配,命中第一条符合条件的规则后就会终止后续判断- 第一条规则匹配到目标分支后直接设置为不执行,对应你原本的排除逻辑
- 第二条规则中,
$CI_COMMIT_BRANCH变量仅在分支流水线中存在,加上 master 分支的单独匹配,完全覆盖原有only配置的触发范围
内容的提问来源于stack exchange,提问作者Stack Overflow
相关产品推荐
相关产品推荐

