我一直在研究Azure DevOps,我对一些事情感到困惑:微软似乎强烈建议使用YAML管道,而不是经典管道;很公平,但它们需要替换classi中的所有功能c管道。我该如何替换";释放管线";YAML管道的功能?
例如,对于经典的发布管道,我可以设置一个管道来部署到具有手动触发器的生产中(请参阅"用户手动"(:
https://learn.microsoft.com/en-us/azure/devops/pipelines/release/triggers?view=azure-devops#拉取请求触发
与此等效的YAML管道是什么?我显然不想要一个自动部署到生产中的触发器——我一直希望该部署严格手动启动——但帮助文章似乎没有提供任何YAML替代方案。
正如Daniel上面的评论,Yaml管道支持CD的多级Yaml管道。有关更多详细信息,您可以查看Azure DevOps管道-多级管道和连续交付的Yaml。
Azure devops-yaml多级管道和经典发布管道都可以用于CD,但它们确实有一些不同。正如我所知,YAML管道中没有功能可以等效于Classic Release中的manual trigger
。
目前,YAML管道中不支持手动触发器,请参阅本讨论。好消息是,产品团队已经考虑了功能请求,新功能在路线图上是。(可能计划在2020年第三季度(
根据那里的团队:他们在这里考虑的新功能的范围是能够将一个阶段标记为";总是手动启动";。如果有其他阶段依赖于这个阶段,那么这些阶段将继续等待,直到这个阶段执行完毕
在Yaml管道中实现manual trigger
功能之前,我们可能需要等待一段时间。希望新功能能满足您的需求。
微软表示,他们的团队内部使用发布流分支策略:发布流:我们如何在VSTS团队上进行分支
Release Flow意味着必须创建发布分支以触发发布,其外观如下:
发布/productname-sprint02
因此,创建这样的分支可以作为手动触发
在多阶段的YAML管道中,当管道执行是发布分支上下文时,生产部署阶段应该被编码为触发,使用condition:
和包含check:的表达式并不难做到这一点
${{ startsWith(variables['Build.SourceBranch'], 'refs/heads/releases')
p.s.我最近关于类似主题的博客:Azure DevOps–YAML管道和分支策略