繁体   English   中英

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

[英]AzureDevOps Release pipeline with multiple artifacts

是否可以有一个包含多个工件的单个发布管道,这些工件将有条件地触发单独的阶段。

例子:

(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 ,反之亦然。

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

仔细考虑一下您的情况,让第三个工件生成 CI 可能会更清晰(阅读:没有失败的阶段),它会在其他 2 个 CI 构建的构建完成时触发。 该中介构建将根据其触发原因(即WebIdentity )进行标记。 此构建的工件将重新打包上游工件(使用下载工件任务),允许您的发布管道使用一个可能具有 2 个不同标签值的工件。 这使您在预发布条件下的神器过滤器有更多的齿。

Web_CI                            
    \                             #Web - - Web Development - - Web Production
     - -\                        /
         > = WebIdSwitch_CI - - <
     - -/                        \
    /                             #Id - - Id Development - - Id Production
Id_CI


原答案

我可能错了,但我认为您需要根据RELEASE_TRIGGERINGARTIFACT_ALIAS的值运行阶段。

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

  1. 在发布后为每个工件设置一个缓冲阶段,如果值不正确则让它们失败(移动您的工作阶段以在其缓冲后执行)
  2. 用新的第一个任务检查工作并失败
  3. 为每个任务编写一个条件执行选项,以确保如果触发工件不正确,它们都不会执行

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

我不确定您是否已经在您的舞台上使用 Artifact Filters 作为您部署前条件的一部分,但这可能是另一种不太像黑客的方式。 我必须将测试管道放在一起并尝试一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM