Azure DevOps管道中的“作业挂起”消息

问题描述

我们使用TFVC作为VCS,我们的存储库位于Azure存储库中,我们将Azure DevOps用于CI / CD。 Main分支的管道构建发生了更改,并且启用了“ Gate check-in”选项。

我们使用部署在构建服务器上的托管代理。当前,有3个构建环境,每个构建环境都部署了1个代理。由于有许多开发人员在从事该项目-许多并发签入成为瓶颈,这就是为什么我们现在在单个代理程序池中有3个代理程序,管道有1个作业,并且正在使用具有3个代理程序的代理程序池。

问题是,当几个开发人员检入更改仅在运行一个构建时,队列中的所有其他构建都必须等到完成为止,尽管事实上其他2个代理处于联机状态并且在同一个池中处于空闲状态。 生成与消息“作业挂起”一起排队。有趣的是,如果我们从azure devOps运行管道,它们将同时运行,但是当开发人员从Visual Studio检入更改时,它们就会排队。

解决方法

这是由于启用了“门控签入”选项。门控签入不能并行运行。

This answer提供了更多详细信息。

简而言之,门控签入会获取分支中的最新变更集+正在签入的代码,然后构建代码。如果构建失败,则签入将失败。如果要使用并行构建,则需要禁用门控签入并使用CI构建。