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

GitLab CI配置workflow规则后流水线未执行问题排查

GitLab CI Workflow Rules 不触发流水线的问题分析

问题描述

您好,我的英语不太流利,以下是我的问题:我编写了一个简单的GitLab CI流水线,用于测试带rules的workflow关键字,配置如下:

image: docker:rc-dind

stages:
  - build-socle

workflow:
  rules:
    - changes:
        - "!/README.md"
      when: always

build-socle:
  stage: build-socle
  script:
    - echo "Lancement de la construction de l'image socle"

我理解该流水线应在除README.md外的任意文件修改时触发,但修改项目中的myscript.sh文件后,流水线并未启动,请问可能的原因是什么?

问题原因及解决方案

1. Changes规则的否定语法错误

GitLab CI的changes规则中,否定路径的正确写法是- !"README.md",而非将感叹号包含在引号内的"!/README.md"。后者会被识别为一个名为!/README.md的具体文件路径,而非排除README.md的规则,导致没有任何变更能匹配该条件,流水线自然不会启动。

2. Workflow规则逻辑不完整

原规则仅定义了单一匹配条件,但该条件无法匹配任何实际文件变更。需要调整规则逻辑,先匹配所有文件变更,再排除README.md,或者直接使用否定路径:

修正后的配置方案一(推荐)

image: docker:rc-dind

stages:
  - build-socle

workflow:
  rules:
    - changes:
        - "**/*"
      except:
        - "README.md"
      when: always

build-socle:
  stage: build-socle
  script:
    - echo "Lancement de la construction de l'image socle"

修正后的配置方案二

image: docker:rc-dind

stages:
  - build-socle

workflow:
  rules:
    - if: '$CI_COMMIT_BRANCH'
      changes:
        - !"README.md"
      when: always

build-socle:
  stage: build-socle
  script:
    - echo "Lancement de la construction de l'image socle"

3. 额外检查点

  • 确认myscript.sh已被提交到Git仓库,未被添加到.gitignore文件中。
  • 检查GitLab项目的CI/CD设置是否启用了流水线触发功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:02:36