如何配置同时支持schedules与changes规则的GitLab-CI流水线
问题根因与修复方案
你的GitLab CI配置存在两处语法错误,导致changes规则未生效:
- 缩进错误:
changes下的路径列表缩进层级不符合YAML规范,当前路径项和changes关键字平级,CI解析器无法识别这些路径属于changes匹配规则,直接导致推送场景下规则失效 - 路径转义不规范:带空格的路径使用反斜杠转义容易触发YAML解析异常,无需用反斜杠转义,改用单引号包裹路径即可
修正后的配置片段
Example Tests: stage: Example tags: - aws-medium-runner script: - MY_SCRIPT rules: - if: $SCHEDULE_A == "true" # 绑定调度器中的A类定时任务 when: always - if: '$CI_PIPELINE_SOURCE == "push"' changes: # 仅当指定目录下的文件发生变更时,推送操作才触发任务 - 'Test Cases/Example/*' - 'Object Repository/Example/*' - 'Test Suites/Example/*' - 'Scripts/Example/*' when: always dependencies: - Set Release Version
验证说明
修正后推送代码时:
- 若修改内容命中上述4个目录下的文件,当前任务会正常触发
- 若修改内容未命中上述路径,当前任务会自动跳过
- 定时调度任务的逻辑不受影响,可正常按原有规则执行
内容的提问来源于stack exchange,提问作者Josh Young
相关产品推荐
相关产品推荐

