Continuous integration 不允许一个GitLab项目的CI管道同时运行?

Continuous integration 不允许一个GitLab项目的CI管道同时运行?,continuous-integration,gitlab,Continuous Integration,Gitlab,在内部GitLab服务器上,有一个项目的CI脚本不允许同时执行多个管道(Kubernetes中的外部副作用)。因此,如果连续推送两个提交的时间少于第一个管道需要完成的时间,那么两个管道将同时运行,这将导致两个管道都失败 在这种情况下,为CI runner(一个K8s runner跨多个回购协议使用)全局设置concurrent=1是不可行的,因为应该允许使用该runner的其他项目的管道同时运行 是否可以仅对一个项目禁止CI并发?取消较旧的管道或排队等待较新的管道都可以。您可以使用limit=1

在内部GitLab服务器上,有一个项目的CI脚本不允许同时执行多个管道(Kubernetes中的外部副作用)。因此,如果连续推送两个提交的时间少于第一个管道需要完成的时间,那么两个管道将同时运行,这将导致两个管道都失败

在这种情况下,为CI runner(一个K8s runner跨多个回购协议使用)全局设置
concurrent=1
是不可行的,因为应该允许使用该runner的其他项目的管道同时运行


是否可以仅对一个项目禁止CI并发?取消较旧的管道或排队等待较新的管道都可以。

您可以使用
limit=1
,如下链接所述


不要使用共享的运行程序,而是在您的案例中使用特定于项目的运行程序,这样其他项目就不会受到影响

在运行程序中设置
limit=1
怎么样?如@TarunLalwani中所述,谢谢。然而,它是一个跨多个存储库使用的Kubernetes runner。因此,这样的设置不仅会影响所讨论的回购。@TarunLalwani:我想我们可以为这一回购配置一个单独的运行程序,并为其设置
limit=1
。所以你的建议很有帮助。谢谢。我试过这样做,但是当特定的运行者很忙时,该项目的作业只会被共享的运行者拾取,然后它们最终会并行运行。正如文档所述,
限制是针对并发作业,而不是管道。在完成管道1之前,运行程序仍然可以启动管道2作业1。我面临同样的问题,但这个解决方案似乎不起作用。
concurrent = 3 // Attribute that limits a number of projects
check_interval = 0
[[runners]]
  limit = 1 // Attribute that limits quantity job by runners
  name = "test-ci"
  url = "https://gitlab.com/ci"
  token = "38274bf1655a0f48d72b15815a83d4e6a85689"
  executor = "shell"
  [runners.cache]

[[runners]]
  limit = 1
  name = "teste2"
  url = "https://gitlab.com/ci"
  token = "38274bf1655a0f48d72b15815a83d4e6a85689"
  executor = "shell"
  [runners.cache]