GitLab CI设置特定变量时如何跳过其余job仅执行指定job?
解决方案
通过GitLab CI的全局default.rules配置即可实现需求,一次性配置后所有新增普通job无需额外加规则,彻底避免漏加锚点的问题。
配置逻辑
default 关键字下的配置会被所有job默认继承,如果某job单独配置了rules,则会覆盖默认的规则配置:
- 给所有job设置默认规则:当
$HOURLY为TRUE时不运行,其余场景正常运行 - 仅给
hourly-deploy-job单独配置规则:仅当$HOURLY为TRUE时运行
完整配置代码
stages: - build - test - deploy # 全局默认规则,对所有未单独配置rules的job生效 default: rules: - if: $HOURLY == "TRUE" when: never - when: always # 普通job:无需额外配置,自动继承默认规则 build-job: stage: build script: - echo "Build." test-job: stage: test script: - echo "Test." deploy-job: stage: deploy script: - echo "Deploy." # 定时任务专属job:单独配置rules覆盖默认规则 hourly-deploy-job: stage: deploy script: - echo "Hourly Deploy." rules: - if: $HOURLY == "TRUE"
兼容说明
如果你的GitLab版本低于14.10(不支持default.rules语法),可以调整定时任务的触发规则:给Daily Schedule新增一个值为TRUE的$DAILY变量,再把所有普通job的运行条件绑定到push事件或$DAILY变量即可。
内容的提问来源于stack exchange,提问作者acri
相关产品推荐
相关产品推荐

