链接 Azure DevOps 管道

Posted

技术标签:

【中文标题】链接 Azure DevOps 管道【英文标题】:Chaining Azure DevOps pipelines 【发布时间】:2020-10-20 07:04:18 【问题描述】:

我希望下面的 Azure DevOps 管道在两个资源管道成功构建相同的 master 提交时自动触发。这可能吗?现在它会在其中一个管道完成导致两次运行时触发。

trigger: none
pr: none

resources:
  pipelines:
    - pipeline: "buildPipeline1"
      source: "BuildPipeline1"
      trigger:
        branches:
        - master

    - pipeline: "buildPipeline2"
      source: "BuildPipeline2"
      trigger:
        branches:
        - master

【问题讨论】:

【参考方案1】:

抱歉,暂时不可以。

对于流水线触发器,我们只能在另一个完成后触发一个流水线,将触发流水线指定为流水线资源。

您可以在这里参考我们的官方文档-- Trigger one pipeline after another

我能遇到的唯一解决方法是,在两个管道的末尾添加一个任务,如果相同的提交构建并构建成功,则查询另一个管道的状态。

最后我们可以添加任务电源外壳并添加脚本以调用 REST API 以根据先前的任务结果对构建/任何其他管道进行排队。

$connectionToken="PAT"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$PipelineUrl = "https://dev.azure.com/Org name/project name/_apis/pipelines/Pipeline ID/runs?api-version=6.0-preview.1" 

$body =" 
 `"resources`":
        `"repositories`":
            `"self`":`"refName`":`"refs/heads/master`"
            
         
    
"
$Pipelines = Invoke-RestMethod -Uri $PipelineUrl -ContentType "application/json" -Body $body -Headers @Authorization=("Basic 0" -f $base64AuthInfo) -Method POST

【讨论】:

感谢帕特里克的回复!我一定会调查你的解决方案。我将“未解决”的问题留待了解,并希望您或其他任何人在 Azure DevOps 支持时提供更新。【参考方案2】:

现在这是不可能的。如果有任何已定义的触发器通过,您的管道将触发。所以如果你需要这样的东西,你需要使用 webhook 构建。例如,您可以在管道成功时调用 Azure Function。在某个数据库或其他形式的状态中记录管道 A 已针对提交 32563456 运行,然后当管道 B 将针对同一提交运行并且通知您的函数时,您将从 Azure 函数触发此管道。

我知道这听起来像是很多工作,但不支持开箱即用。

【讨论】:

感谢 Krzysztof 的回复。我会调查的!

以上是关于链接 Azure DevOps 管道的主要内容,如果未能解决你的问题,请参考以下文章

发布管道 Azure Devops 代码覆盖率报告

使用 Python Selenium Webdriver 自动导出 Azure Devops 管道工作项修订

Azure devops 拉取请求中的 Sonarqube Quality Gate 状态链接始终指向 localhost

在 Azure Devops 中发布成功时自动更改工作项状态

Azure 门户没有看到 DevOps 组织 [帐户问题?]

更新 Azure DevOps 版本的变量组快照