在Azure发布管道中,是否可以一次手动触发多个发布管道?

时间:2020-10-20 14:16:27

标签: azure azure-devops azure-pipelines azure-pipelines-release-pipeline

在我们的组织中,我们为每个存储库都设置了完整的管道(在yaml中构建,并使用使用部署组必须执行的ui进行发布)。我们必须通过管道将存储库分开,因为我们通常只是针对该服务进行发布,但是有时我们一次发布多个服务(这是发布之前的已知方式)。

当前,我们只有要运行的发布管道列表,我们手动运行每个管道。

我想知道是否有一种方法可以设置一些东西,以便在初始设置后一次单击就可以运行多个发布管道?

下面是id理想的操作步骤:

  1. 确定哪些管道需要释放(通常发生在计划会议的冲刺之前)
  2. 创建“内容”(仅用于此版本的另一个发布管道,我不知道的另一个天蓝色选项),基本上将所有需要包含在一个地方的发布管道带到一起。
  3. 触发所有发布管道,使其运行(就像我手动运行每个管道一样)

2 个答案:

答案 0 :(得分:1)

您可以使用Trigger Azure DevOps Pipeline,然后创建另一个管道:

enter image description here

您可以为每个发行版创建一个变量,以指示要部署的工件的版本。

enter image description here

通过这种方式,一旦定义了该版本,您所需要的就是在运行该版本之前先对其进行编辑。

答案 1 :(得分:0)

作为另一个解决方法,您可以添加一个PowerShell任务,以通过REST API为不同的版本定义创建多个版本。

POST https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=5.0

示例powershell脚本以创建发布,如下所示:

#Define the variable and enter the release definition id that you want to trigger. For example, I want to manually trigger release pipelines 1 and 2 at once.

$ReleaseDefinitionID = 1,2

ForEach ($ID in $ReleaseDefinitionID)
{
Write-host "ID is" $ID

$token = "pat"   
$url = "https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/releases?api-version=5.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))


$JSON = @"
{
  "definitionId": $ID
}
"@

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -ContentType application/json -body $JSON

}