具有多个工件的AzureDevOps发布管道

时间:2019-04-17 19:35:25

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

是否可能有一个包含多个工件的发布管道,这些工件会有条件地触发各个阶段。

示例:

(Build Artifact 1)构建Web

的标签

(Build Artifact 2)构建Identity

的标签

设置发布管道时,我会创建一个管道并添加

(Build Artifact 1)-> Web Stage

(Build Artifact 2)-> Identity Stage

同时设置了这两个工件,并会自动触发发布并将其设置为After Release

我遇到的问题是,当我将(Build Artifact 2)的构建排队时,两个阶段都将部署。而且我只希望Identity Stage进行部署,反之亦然。

我希望所有内容都在一个管道中的原因是,因为我所有的工件都包含在一个管道中,我知道如果创建单独的管道,我可以做到这一点。

1 个答案:

答案 0 :(得分:0)

更多地考虑您的情况,让第三个生成CI的工件(在其他2个CI构建的构建完成时触发)可能更干净(请阅读:没有失败的阶段)。中介构建将根据触发原因进行标记(即WebIdentity)。此构建的工件将是上游工件的重新打包(使用下载工件任务),从而使您的发布管道可以使用一个可能具有2个不同标记值的工件。这使您在预释放条件下的伪像过滤器有更多的牙齿。


原始答案

对此我可能是错的,但是我认为您需要根据RELEASE_TRIGGERINGARTIFACT_ALIAS中的值来运行各个阶段。

可能有几种方法可以做到这一点,例如

  1. 在每个工件发布后都有一个缓冲阶段,如果值不正确(让您的工作阶段在其缓冲之后执行),则让它们失败。
  2. 使用新的第一个任务来签入工作,并失败
  3. 在每个任务上写一个条件执行选项,以确保在触发工件不正确的情况下,它们都不执行

可以使用$(Release.TriggeringArtifact.Alias)在管道上访问变量,也可以使用$env:RELEASE_TRIGGERINGARTIFACT_ALIAS在powershell中访问变量。

我不确定您是否已经在部署前的条件中在舞台上使用了Artifact筛选器,但这可能是另一种方式,并不是那么简单。我必须将一个测试管道放在一起,然后尝试一下。