如何在 VSTS (Azure DevOps) 中同时 运行 五个代理作业?

How to run five agent jobs simultaneously in VSTS (Azure DevOps)?

我创建了一个包含五个代理作业的发布管道,我想同时启动所有五个作业。

示例:

在示例中,我需要同时启动所有代理作业,并同时执行唯一任务(等待 10 秒)。

VSTS (Azure DevOps) 是否有执行此操作的选项?

在发布管道中单击 "Agent job",然后展开 "Execution plan" 并单击 "Multi-agent"。

如果您希望并行执行作业,则选择多代理配置,但如果您有 5 个(非常)不同的作业,则可以从下拉列表 "Run this job" 中选择 "Even if a previous job has failed"。

这默认设置为 "Only when all previous jobs have succeeded",这意味着:

  1. 所有 5 个作业都将按照您设置的顺序依次执行
  2. 一旦其中一个作业失败,作业链就会停止

请注意,您可以在哪个代理队列上单独指定将执行什么作业,默认情况下它们都将进入同一个队列,如果您 运行 在一个队列上并行执行 5 个作业,那么此队列应该有 5 个可用和空闲的代理,以获得您所期望的。

您也可以只使用 5 个不同的阶段(具体取决于您在做什么)。然后,您可以充分利用管道模型的全部功能,拥有 pre 和 post 阶段,随心所欲。正如其他答案中提到的那样,不同的代理工作也可能如此,但这更直接。您也可以轻松克隆阶段。

我不确定您等待 10 秒的目的是什么,但这通过 PowerShell 步骤非常容易实现。 Select 单选按钮 "Inline" 并输入:

Start-Sleep -Seconds 10

管道示例,它可能会同时执行您想要的工作,但请记住,每个代理作业(一个阶段中的多个作业或多个单个作业阶段无关紧要)必须找到一个代理有能力,可用且空闲,否则作业将在等待队列中等待!!!

我认为您需要创建 5 个阶段,因为对于 Azure devops 中的发布管道,一个阶段中的作业无法并行。see documents from Microsoft 或者,如果您想 运行 多个代理上的同一组任务,您可以使用选项 Multi-agent,如下所示。 ADO Multi-agent option