【问题标题】:Execute Mutliple release pipeline执行多个发布管道
【发布时间】:2020-07-30 10:55:43
【问题描述】:

我有 50 多个用于生产环境的发布管道,每次进行生产时都必须手动批准每个管道进行部署。

有没有什么方法可以实现自动化,只需单击一下,所有管道都会获得批准和部署?

【问题讨论】:

  • 批准是什么意思?运行它们,或者您必须获得一些部署前的批准?
  • 嗨,Kamlesh,这个问题有更新吗?如果答案对您有帮助,您可以mark it accepted,其他人可以直接找到有用的解决方案。或者如果您有任何疑虑,请随时在这里分享,我们会检查并帮助您解决。

标签: azure-devops azure-pipelines


【解决方案1】:

我知道实现这一点的唯一方法是将 50 多个管道组合到一个主版本中,并让那些依赖于部署到封闭环境的单独阶段。分配对该环境的批准。因此,一旦“批准环境”中的该阶段获得批准,所有后续阶段都将运行。

【讨论】:

    【解决方案2】:

    在Azure DevOps中,我们可以配置审批,它会检查该阶段使用的所有资源,例如源代码并跟踪部署的目标服务器,这应该让管理人员检查并同意此部署,批量审批没有意义。

    如果您坚持同时批准多个发布管道阶段。我们建议您可以删除这些批准。

    或者我们可以使用 API 到 list all Approvals 并获取批准 id,然后 update status of an approval。 另外,如果管道中有多个审批,则只会审批当前阶段。

    步骤:

    创建PAT令牌->创建构建管道->点击tab变量并添加变量pat = {Token},然后设置为秘密变量->添加任务powershell并输入以下脚本进行审批。

    $connectionToken="$(pat)"
    $base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
    $PipelineUrl = "https://vsrm.dev.azure.com/{Org name}/{Project name}/_apis/release/approvals?api-version=5.1" 
    $Pipelines = (Invoke-RestMethod -Uri $PipelineUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    $ ApprovalId = $Pipelines.value.id
    Write-Host  $ ApprovalId
    # List all Approvals and get approval id
    ForEach ($Id in $ ApprovalId)
    {
        $baseUrl = "https://vsrm.dev.azure.com/{Org name}/{Project name}/_apis/release/approvals/$($Id)?api-version=5.1" 
    $body ="{ 
     `"status`": `"approved`"
    }"
    $response =  Invoke-RestMethod -Uri $baseUrl -ContentType "application/json" -Body $body -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method PATCH 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多