是否存在多个工件(不是全部)触发了Azure DevOps发布管道?

时间:2020-04-11 16:57:15

标签: azure-devops

Azure DevOps发布管道允许我指定多个输入工件,但是自动触发仅发生在主要工件上。有没有一种方法可以对N个输入工件进行“全部等待”类型的操作,以使我的发布管道仅在每个工件都具有与某个指定值匹配的可用版本时启动?

例如,假设我在一个回购中进行了一次提交M,该回购中有多个不同的CI作业A和B,这花费的时间相差很大。一个CI作业(A)在数分钟内将NuGet软件包创建为工件,而另一个CI作业(B)花数小时来创建VM映像。我想要一个发布管道,它将使用NuGet包和VM映像作为输入。但是,如果我只是将最新版本的A和B用作发布管道中的输入工件,并且在主要工件(A或B)上具有CI触发器,则当版本触发时,它可能会使用工件的不匹配版本作为10 NuGet。在我什至获得其他CI管道制作的2个VM映像之前,来自10个不同提交的软件包已完成。我以为也许build / artifact标签可以解决这个问题,所以我的发布会等待所有具有相同标签的工件,但是我不能在build / artifact标签过滤器中使用变量,这使得它实际上无法修改为任何类型的自动计划/触发

对于这种类型的工作流程,这是否是一种好的模式?

1 个答案:

答案 0 :(得分:0)

对于这个问题,根据您的工作流程,恐怕不可能实现完全自动化的发布。每次启用新版本时,启用持续部署触发器将创建一个新版本。由于两个工件不是同时生成的,因此两个匹配的工件不能用作自动发行版中的源。

要使用特定工件作为发行版中的源代码,我们通常在Artifact中指定版本。但这无法实现连续部署。一种方法是合并作业A和B来生成工件,这样您就不必担心工件的相应问题,但是根据您的实际情况,我不确定这样做的可行性。

对N个输入工件进行“等待所有”类型的操作,以便我释放 仅当每个工件都有可用的版本时,管道才会启动 匹配某些指定值

除了否定答案,我认为您想要的是一个好主意!所以我在DC论坛上发布了功能请求here。您可以对该建议票进行投票并在此处分享您的评论。产品团队将在查看更新后提供更新。感谢您帮助我们构建更好的Azure DevOps。