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

如何避免GitLab使用--follow-tags推送时创建多条流水线

解决GitLab单次推送(含标签)重复创建流水线的问题

通过workflow关键字配置触发规则,可以实现推送分支+标签时只生成一条标签流水线,避免tests阶段重复执行。修改后的.gitlab-ci.yml如下:

stages:
    - tests
    - deploy

workflow:
  rules:
    # 标签推送时允许创建流水线
    - if: $CI_COMMIT_TAG
    # 仅当推送分支且未同时推送标签时,允许创建分支流水线
    - if: $CI_COMMIT_BRANCH && $CI_COMMIT_TAG == null

tests:
    stage: tests
    script:
        - echo "Tests"
    rules:
        - if: $CI_COMMIT_BRANCH
        - if: $CI_COMMIT_TAG

k8s-stage:
    stage: deploy
    script:
        - echo "Staging"
    rules:
        - if: $CI_COMMIT_TAG

配置逻辑

  • 全局流水线触发控制(workflow):
    当执行git push --follow-tags时,推送同时包含分支和标签,此时$CI_COMMIT_TAG不为空,第二条规则不生效,只会触发标签对应的流水线,分支流水线被拦截,从根源上避免了重复执行。
    单独推送分支/标签时,各自的流水线正常触发,满足tests在两种场景下都运行的需求。
  • 任务级规则:
    • tests明确保留分支和标签推送时的运行逻辑,依赖workflow的全局控制避免重复。
    • k8s-stage保持仅标签推送时运行的原有逻辑。

优势对比

相比git push -o ci.skip && git push --tag的方案,该配置不会生成跳过的流水线,也就规避了徽章显示异常的问题,同时完全避免了tests阶段的重复执行,节省资源。

注意事项

GitLab官方存在相关未解决问题,但该workflow配置可以有效绕过此场景下的重复流水线问题,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:32:36