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

GitLab CI作业规则配置:特定标签推送且目录变更时运行

解决方法

你的需求是让「推送指定标签」和「src目录有变更」两个条件同时生效,正确的配置需要调整表达式写法并优化路径匹配,具体如下:

修正后的CI配置

semver_tag:
  stage: semver_tag
  image: mkver:1.0
  script:
    - TAG=$(git mkver next)
    - echo "Next tag is $TAG..."
    - git mkver tag
  rules:
    - if: '$CI_COMMIT_TAG == "staging" || $CI_COMMIT_TAG == "production"'
      changes:
        - src/**/*  # 匹配src目录下所有文件(含子目录),若只需直接文件则保留src/*
      when: always
    - when: never

关键说明

  1. 表达式加单引号:把if条件用单引号包裹,避免YAML解析时误处理||符号,保证标签判断逻辑准确。
  2. 路径匹配优化:src/*仅能匹配src目录下的直接文件,若有子文件夹,改用src/**/*才能覆盖所有层级的文件变更。
  3. 逻辑与关系:GitLab CI规则条目里的if和changes默认是同时满足的逻辑,因此只有当推送的是staging/production标签,且src目录存在变更时,才会触发该作业。

如果需要强制和特定分支(比如main)对比变更,可在changes中添加compare_to参数(需GitLab 13.9及以上版本支持):

changes:
  - src/**/*
  compare_to: main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:24:10