Azure DevOps 发布跳过任务
Azure DevOps Releases skip tasks
我目前正在为我的公司在 Azure DevOps 2020(本地)中实施 CI/CD 管道。有一个要求我似乎无法方便地解决:根据发布管道中的用户输入跳过某些任务。
我想要的:
用户手动创建新的 release 并决定是否应执行任务组。
代理任务:
1. Powershell
2. Task Group (conditional)
3. Task Group
4. Powershell
我试过的:
- 根据人工干预任务,通过任务组将任务拆分为多个作业。
- 不起作用,如果手动干预被拒绝,整个执行将停止并失败。
- 将任务分成多个阶段,执行与上述几乎相同的操作,结果相同。
- 将任务分成多个阶段手动触发每个阶段。
- 不是很有用,因为你必须在前面的阶段成功之后以正确的顺序执行你想要的。
- 发布创建时设置的变量 (true/false)。
- 如果没有更好的结果会使用它,但有点容易出现错别字,而且对于将要使用它的同事来说不是很有用。不幸的是,Azure DevOps 似乎不支持发布的下拉列表或复选框变量。 (但在构建中使用参数)
- 两个阶段,一个是任务 1、2、3、4,另一个是任务 1、3、4。
- 对我来说不太理想,因为重复。
非常感谢任何帮助!
取决于通往 运行 的管道的标准。一个建议是两条流水线调用同一个模板。并且每个管道可能有一个嵌入其中的 true/false 作为参数传递给模板。
模板中将定义所有任务;然而,有条件的将有这样的条件:
condition: and(succeeded(), eq('${{ parameters.runExtraStep}}', true))
此条件将在任务级别设置。
可以在相应的管道中定义任何特定的触发器。
这是关于 Azure YAML Templates 的文档,可帮助您入门。
遗憾的是,无法为任务组添加自定义条件,但此功能在路线图上。查看以下用户声音,您可以投票:
解决方法是您可以克隆发布定义(右键单击发布定义> 克隆),然后删除一些任务或任务组并保存,之后您可以根据详细场景创建具有相应发布定义的发布.
最后我决定坚持发布并将我的任务分成 3 个代理工作。作业 1 带有第一个 powershell,作业 2 带有条件任务组,仅当变量为真时才执行,作业 3 带有剩余任务。
正如 and 所述,我可以使用 yaml 管道为条件实现可选择的运行时参数。不幸的是,其中一个任务组需要来自 yaml 管道的特定工件。大多数时候它是“最新的”,这可以通过下载工件任务轻松实现,但有时会选择以前的工件。我发现没有一种简单的方法可以像在默认情况下有一个包含工件列表的下拉列表那样方便的方式实现这一点。
如果找到 this blog post 任何对如何在 yaml 管道中处理不同构建工件感兴趣的人。
谢谢你帮我!
我目前正在为我的公司在 Azure DevOps 2020(本地)中实施 CI/CD 管道。有一个要求我似乎无法方便地解决:根据发布管道中的用户输入跳过某些任务。
我想要的: 用户手动创建新的 release 并决定是否应执行任务组。
代理任务:
1. Powershell
2. Task Group (conditional)
3. Task Group
4. Powershell
我试过的:
- 根据人工干预任务,通过任务组将任务拆分为多个作业。
- 不起作用,如果手动干预被拒绝,整个执行将停止并失败。
- 将任务分成多个阶段,执行与上述几乎相同的操作,结果相同。
- 将任务分成多个阶段手动触发每个阶段。
- 不是很有用,因为你必须在前面的阶段成功之后以正确的顺序执行你想要的。
- 发布创建时设置的变量 (true/false)。
- 如果没有更好的结果会使用它,但有点容易出现错别字,而且对于将要使用它的同事来说不是很有用。不幸的是,Azure DevOps 似乎不支持发布的下拉列表或复选框变量。 (但在构建中使用参数)
- 两个阶段,一个是任务 1、2、3、4,另一个是任务 1、3、4。
- 对我来说不太理想,因为重复。
非常感谢任何帮助!
取决于通往 运行 的管道的标准。一个建议是两条流水线调用同一个模板。并且每个管道可能有一个嵌入其中的 true/false 作为参数传递给模板。
模板中将定义所有任务;然而,有条件的将有这样的条件:
condition: and(succeeded(), eq('${{ parameters.runExtraStep}}', true))
此条件将在任务级别设置。
可以在相应的管道中定义任何特定的触发器。
这是关于 Azure YAML Templates 的文档,可帮助您入门。
遗憾的是,无法为任务组添加自定义条件,但此功能在路线图上。查看以下用户声音,您可以投票:
解决方法是您可以克隆发布定义(右键单击发布定义> 克隆),然后删除一些任务或任务组并保存,之后您可以根据详细场景创建具有相应发布定义的发布.
最后我决定坚持发布并将我的任务分成 3 个代理工作。作业 1 带有第一个 powershell,作业 2 带有条件任务组,仅当变量为真时才执行,作业 3 带有剩余任务。
正如
如果找到 this blog post 任何对如何在 yaml 管道中处理不同构建工件感兴趣的人。
谢谢你帮我!