繁体   English   中英

Azure DevOps 版本跳过任务

[英]Azure DevOps Releases skip tasks

我目前正致力于在 Azure DevOps 2020(内部部署)中为我的公司实施 CI/CD 管道。 有一个要求我似乎无法方便地解决:根据用户在发布管道中的输入跳过某些任务。

我想要的是:用户手动创建新版本并决定是否应执行任务组。

代理任务:

 1. Powershell
 2. Task Group (conditional)
 3. Task Group
 4. Powershell

我试过的:

  • 根据手动干预任务将任务拆分为任务组的多个作业。
    • 不起作用,如果手动干预被拒绝,则整个执行将因失败而停止。
  • 将任务分成多个阶段,几乎与上述相同,结果相同。
  • 将任务分成多个阶段手动触发每个阶段。
    • 不是很有用,因为你必须以正确的顺序执行你想要的,并且在前面的阶段成功之后。
  • 发布创建时设置的变量(真/假)。
    • 如果没有更好的东西出现,但有点容易出现错别字并且对于将使用它的同事来说不太有用,将使用它。 不幸的是,Azure DevOps 似乎不支持发布的下拉或复选框变量。 (但适用于构建中的参数)
  • 两个阶段,一个是任务 1、2、3、4,一个是任务 1、3、4。
    • 由于重复,对我来说不是很理想。

任何帮助将不胜感激!

取决于管道运行的标准是什么。 一项建议是两条流水线调用相同的模板。 并且每个管道中可能嵌入了一个真/假作为参数传递给模板。

模板将包含定义的所有任务; 但是,有条件的将具有以下条件:

 condition: and(succeeded(), eq('${{ parameters.runExtraStep}}', true)) 

此条件将在任务级别设置。

可以在相应的管道中定义任何特定的触发器。

以下是有关Azure YAML 模板的文档,可帮助您入门。

不幸的是,不可能为任务组添加自定义条件,但此功能在路线图上。 检查以下用户声音,您可以投票:

https://developercommunity.visualstudio.com/idea/365689/task-group-custom-conditions-at-group-and-task-lev.html

解决方法是您可以克隆发布定义(右键单击发布定义> 克隆),然后删除一些任务或任务组并保存它,然后您可以根据详细场景创建具有相应发布定义的发布。

最后我决定坚持使用 Releases 并将我的任务分成 3 个代理工作。 作业 1 带有第一个 powershell,作业 2 带有条件任务组,仅当变量为真时才执行,作业 3 带有其余任务。

正如cece-dongdreadedfrost所说的那样,我可以使用 yaml 管道为条件实现可选的运行时参数。 不幸的是,其中一个任务组需要来自 yaml 管道的特定工件。 大多数时候它是“最新的”,这可以通过下载工件任务轻松实现,但有时会选择以前的工件。 我发现没有一种简单的方法可以像在默认情况下有一个包含工件列表的下拉列表的版本一样方便的方式来实现这一点。

如果有人对如何在 yaml 管道中处理不同的构建工件感兴趣,可以找到这篇博文

谢谢你的协助!

暂无
暂无

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

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