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

为何仅Git标签触发的GitLab CI Job会同时运行两个任务

问题根因
  • sync_s3:nonprod任务未显式排除标签推送事件。GitLab CI的规则默认对分支推送、标签推送等所有默认触发事件生效,你仅为生产任务配置了标签推送的匹配条件,但未限制非生产任务的触发事件类型,只要推送标签时满足非生产任务的changes规则,就会触发该任务。
  • 标签推送场景下的changes判定逻辑:推送标签时,GitLab会对比当前标签对应提交与上一个同类型标签的提交差异,只要pp2目录在差异范围内,sync_s3:nonprod的changes规则就会命中,进而触发任务。
解决方案

在sync_s3:nonprod的规则中新增标签推送事件的排除规则即可,修改后的配置如下:

sync_s3:nonprod:
  stage: sync:nonprod
  rules:
    # 新增规则:标签推送场景下直接跳过该任务
    - if: $CI_COMMIT_TAG
      when: never
    - changes:
        - pp2/*
  extends: .sync_s3
  variables:
    AWS_ENV: nonprod
    FOLDER_ENV: pp2/
  tags:
    - gaming_nonprod

如果需要更严谨的限定,也可以直接显式指定非生产任务仅在分支推送场景下生效:

sync_s3:nonprod:
  stage: sync:nonprod
  rules:
    # 仅当为分支推送且pp2目录有变更时触发
    - if: $CI_COMMIT_BRANCH
      changes:
        - pp2/*
  extends: .sync_s3
  variables:
    AWS_ENV: nonprod
    FOLDER_ENV: pp2/
  tags:
    - gaming_nonprod

两种方案都可以实现只有sync_s3:prod任务在推送符合条件的标签时触发的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:36:04