【问题标题】:VSTS Deploy multiple pipelinesVSTS 部署多个管道
【发布时间】:2025-12-02 02:20:07
【问题描述】:

现在我已经配置了多个管道,每个管道都有自己的任务和变量。要部署所有我需要手动部署。

是否可以创建一个触发其他管道以组合我的发布定义的管道,以便我可以通过单击来触发所有?

【问题讨论】:

  • 您想从不同的发布定义/管道触发多个发布吗?或者您想在发布定义/管道中部署多个环境(如 Jayendran 建议的那样)?
  • @MarinaLiu-MSFT 我想要的是触发多个管道定义到单个环境,假设我有 10 个微服务,每个微服务都有自己的管道定义,所以要释放所有给开发者我必须触发 10 次,我想要的是将它们组合成单击。但是怎么做?
  • 我添加了如何实现的答案,你可以试试。

标签: azure-devops azure-pipelines


【解决方案1】:

要为多个发布定义创建多个发布,您可以添加 PowerShell 任务以通过REST API为不同的发布定义创建发布。

用于创建发布的 PowerShell 脚本如下:

$body = '
{
    "definitionId": releasedefinitionID,
     "artifacts": [
        {

      "alias": "",
      "instanceReference": {
        "id": "buildID",
        "name": null
      }

        }
    ]
}
'
$bodyJson=$body | ConvertFrom-Json
Write-Output $bodyJson
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
Write-Output $bodyString
$user="name"
$token="PAT"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$Uri = "https://account.vsrm.visualstudio.com/project/_apis/Release/releases?api-version=4.1-preview.6"
$buildresponse = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType application/json -Uri $Uri -Body $bodyString -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
write-host $buildresponse

【讨论】:

    【解决方案2】:

    是的,你可以发布管道中有一个选项称为预部署条件,其中有一个名为trigger的菜单,您可以在其中更改/控制 触发器类型。

    通常如下所示

    更新 1

    为了并行部署多个环境,请将您的触发选项从 after environment 更改为 after release

    【讨论】:

    • 好的,但是通过这种方式,您首先将其部署到 DEV,然后再部署到 QA,我想要的是将所有服务并行部署到 DEV。
    • 问题是它只适用于单个工件,如果你有两个工件并且你想将它们部署为不同的微服务呢?我检查了几次,它不起作用,基本上你必须将一个人工制品设置为主要,然后其他人工制品将不起作用。