You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI中配置的rules规则不生效该如何解决?

问题分析与解决

你的test任务每次都执行的核心原因是:当rules中的changes规则不满足时,GitLab CI会使用默认行为(任务执行)。你只定义了匹配main.py变化的规则,但未设置规则不匹配时的处理逻辑,因此当main.py未更新时,规则不生效,任务仍会按默认方式运行。

修正后的配置

build:
  stage: build
  script:
    - echo "build ok"

test:
  stage: test
  script:
    - echo "test ok"
  rules:
    - changes:
        - main.py
      when: on_success  # 可选,默认值即为on_success,添加后逻辑更清晰
    - when: never  # 当上面的规则不匹配时,直接跳过任务

deploy:
  stage: deploy
  script:
    - echo "deploy ok"

额外说明

  1. 规则按顺序匹配,第一个匹配的规则生效,最后一条when: never确保只有main.py有变化时,test任务才会执行。
  2. 部分场景下changes规则会被GitLab忽略(比如首次运行流水线、手动触发流水线、标签触发流水线),此时任务仍会执行。如果需要限制这些场景,可以添加if条件限定触发源:
test:
  stage: test
  script:
    - echo "test ok"
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push"'
      changes:
        - main.py
    - when: never

内容的提问来源于stack exchange,提问作者fgrd4035

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 02:56:09