[英]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 构建的构建完成时触发。 该中介构建将根据其触发原因(即Web
或Identity
)进行标记。 此构建的工件将重新打包上游工件(使用下载工件任务),允许您的发布管道使用一个可能具有 2 个不同标签值的工件。 这使您在预发布条件下的神器过滤器有更多的齿。
Web_CI
\ #Web - - Web Development - - Web Production
- -\ /
> = WebIdSwitch_CI - - <
- -/ \
/ #Id - - Id Development - - Id Production
Id_CI
原答案
我可能错了,但我认为您需要根据RELEASE_TRIGGERINGARTIFACT_ALIAS
的值运行阶段。
可能有几种方法可以做到这一点,例如
可以使用$(Release.TriggeringArtifact.Alias)
在管道上或在 powershell 中使用$env:RELEASE_TRIGGERINGARTIFACT_ALIAS
访问该变量。
我不确定您是否已经在您的舞台上使用 Artifact Filters 作为您部署前条件的一部分,但这可能是另一种不太像黑客的方式。 我必须将测试管道放在一起并尝试一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.