在过去的几个月里,我们一直遇到一个问题:如果在设法完成现有排队作业之前开始新的运行,则正在进行的 Azure Pipelines 运行/构建最终会导致单个作业停留在队列优先级 1 。该作业最终会启动并完成,但只有当队列中没有其他作业可供更新的运行时。
运行/队列的一些屏幕截图显示了上次发生的时间。
运行队列: 运行队列
以优先级 1 阻止作业的原始运行: 原创,阻塞运行
较新的运行,没有阻塞的作业,全部运行或从优先级 2 开始: 全新,不阻塞运行
显示优先级的被阻止作业: 优先级 1 被阻止的相关作业
我对这个问题进行了一些特别的搜索,并浏览了最近与管道/工作相关的问题,但没有出现太多。
我已经审查了 .yaml 管道中的作业范围,我们没有使用任何特定的方法来控制作业流 - 它们应该以任何顺序运行。
由于这是一个新问题,而且我的搜索没有出现太多,我想我应该从这里开始,然后再考虑支持计划是否合理。谢谢!
根据您的描述,您似乎只设置了几个自托管代理,但没有购买任何自托管并行作业。
请注意,如果您的组织只有单个免费自托管并行作业,则无论您有多少个代理,都只会运行一个代理作业,一次只能选取一个自托管代理添加到您的自托管代理池中;因此,同一管道中定义的所有其他
jobs
或来自其他管道的作业将被困在队列中,等待上一个代理作业完成。
如果您要并行运行多个自托管代理作业以减少队列中的待处理时间,您可以一方面根据实际需要购买任意数量的额外自托管并行作业,另一方面另一方面,利用 Azure Pipelines 的 Microsoft 代理池中的单个免费的 Microsoft 托管并行作业。另请注意,所有 MS 托管或自托管并行作业均由所有项目中共享的所有代理池使用。也就是说,例如,如果单个空闲自托管并行作业被项目 A 中的管道作业之一“占用”,则同一管道或项目 A 中的其他管道中定义的其他代理作业或其他项目都得排队等待。