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

如何让GitLab job等待前序流水线的同名运行job完成后再执行?

GitLab 部署作业防并发原生解决方案

GitLab官方原生提供了无需自定义脚本的实现,直接配置即可解决跨流水线同名部署作业的并发冲突问题,有两种可选方案:

方案1:资源组(推荐,Job粒度控制)

这是专门为同环境部署这类需要串行执行的Job设计的功能,所有指定了同一个资源组标识的Job,无论属于哪条流水线,GitLab都会保证同一时间仅运行一个,后续同组Job会自动排队,等待前序作业完全结束后再启动,完全匹配你的需求。

仅需给对应部署Job加一行配置即可,示例:

# 你的DEV部署作业原有配置
deploy_dev:
  stage: deploy
  script:
    - 清理数据
    - 执行部署
  # 新增资源组配置,同名部署作业使用相同的资源组名称即可
  resource_group: dev_deployment

如果需要自动跳过旧的排队部署,只运行最新提交的部署作业,可以扩展配置:

deploy_dev:
  stage: deploy
  script:
    - 清理数据
    - 执行部署
  resource_group:
    name: dev_deployment
    # 自动取消同资源组中排队的旧作业
    cancel_outdated_jobs: true

方案2:项目级流水线并发限制(全流水线粒度控制)

如果你需要的是整个项目同一时间仅运行一条流水线,不需要按Job单独控制,可以直接在页面配置:

  • 进入对应项目的「设置」→「CI/CD」→「通用管道」
  • 找到「管道并发限制」选项,设置数值为1即可,后续触发的流水线会自动排队等待前序流水线完全结束后再运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:06:03