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

GitLab流水线规则失效:my_stage不符合条件仍运行

问题分析与解决方案

你的问题出在GitLab CI规则的默认行为以及路径匹配的细节上:

  1. 规则默认行为漏洞:
    你当前只定义了一个触发规则,当事件不是merge_request_event或src/test/resources目录无变更时,没有明确的规则阻止job运行。GitLab CI中,若没有任何规则匹配,job会默认按when:always执行,这就是提交src/main/java文件时该阶段仍启动的原因。

  2. 路径匹配范围不足:
    src/test/resources/*仅匹配该目录下的直接文件,无法覆盖子目录中的文件变更。如果需要匹配所有层级的文件,得用递归通配符**。

修正后的配置

写法一:明确条件+兜底规则

stages:
  - my_stage 

my_stage_mr:
  stage: my_stage 
  image: myimage-11-slim
  rules:
    # 仅在合并请求事件且目标目录有变更时运行
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      changes:
        - src/test/resources/**/*
      when: on_success
    # 其他所有情况直接跳过该job
    - when: never

写法二:先排除非MR事件

stages:
  - my_stage 

my_stage_mr:
  stage: my_stage 
  image: myimage-11-slim
  rules:
    # 非合并请求事件直接跳过
    - if: '$CI_PIPELINE_SOURCE != "merge_request_event"'
      when: never
    # MR事件下检查目录变更
    - changes:
        - src/test/resources/**/*

关键说明

  • 新增的- when: never规则彻底兜底,确保所有不满足前置条件的场景都不会触发该job。
  • src/test/resources/**/*能匹配目录下所有层级的文件和子目录变更,覆盖更全面的修改场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:23:18