AzureDevOps释放具有多个工件的管道

问题描述 投票:3回答:1

是否可以使用具有多个工件的单个版本管道,这些工件将有条件地触发单独的阶段。

例:

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

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

azure-devops azure-pipelines-release-pipeline
1个回答
1
投票

更多地考虑您的情况,可能更清晰(阅读:没有失败的阶段)让第三个工件生成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)在管道上访问该变量,也可以使用$env:RELEASE_TRIGGERINGARTIFACT_ALIAS在powershell中访问该变量。

我不确定你是否已经在你的舞台上使用了Artifact Filters作为预部署条件的一部分,但这可能是另一种不那么重要的方式。我必须把测试管道放在一起然后尝试一下。

© www.soinside.com 2019 - 2024. All rights reserved.