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

如何仅在docs目录外文件变更时运行GitLab CI流水线?

GitLab CI 实现仅指定目录变更时跳过任务的解决方案

问题分析

你当前的配置问题在于第一条规则只要检测到docs/目录有变更就直接跳过任务,完全忽略了是否同时存在其他目录的变更。这就导致当docs/和外部目录同时变更时,任务也会被跳过,不符合预期需求。

正确配置

使用GitLab CI的changes函数式条件判断,精准识别仅docs/目录变更的场景:

ignore-changed-docs:
  rules:
    # 仅当所有变更都局限在docs/目录时跳过任务
    - if: 'changes("docs/**/*") && !changes("**/*", {except: ["docs/**/*"]})'
      when: never
    # 其余所有场景(包括docs+其他目录变更、仅非docs目录变更)都执行任务
    - when: always

配置说明

  • 第一条规则的条件分为两部分:
    1. changes("docs/**/*"):确认存在docs/目录下的变更
    2. !changes("**/*", {except: ["docs/**/*"]}):确认不存在任何docs/目录之外的变更
      两者同时满足时,才会跳过任务。
  • 第二条规则作为兜底,覆盖所有不满足第一条的场景,确保只要有docs/外的变更(或混合变更),任务都会正常执行。

这种配置无需硬编码docs/之外的具体目录,无论后续新增或移除其他目录,都能自动适配,符合你对未知目录的兼容需求。

内容的提问来源于stack exchange,提问作者umläute

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:48:18