我一直在研究Azure DevOps,但我感到有些困惑:Microsoft似乎强烈建议使用YAML管道而不是经典管道。足够公平,但是他们需要替换经典管道中的所有功能。我该如何用YAML管道替换“发布管道”功能?
因此,例如,使用经典的发布管道,我可以设置管道以将其部署到具有手动触发器的生产中(请参阅“由用户手动”):
与此等效的YAML管道是什么?我显然不希望触发器自动部署到生产环境中-我一直希望严格地手动启动部署-但是帮助文章似乎没有提供任何YAML替代方案。
答案 0 :(得分:1)
正如上面的 Daniel 评论一样,Yaml管道支持CD的多阶段yaml管道。您可以检查Azure DevOps Pipelines – Multi-Stage Pipelines and YAML for Continuous Delivery了解更多详细信息。
Azure devops yaml多阶段管道和经典发行管道都可以用于CD,但是它们确实有some difference。据我所知,YAML管道中的否功能可以等同于经典版本中的manual trigger
。
目前,YAML管道中不支持手动触发,请参见this discussion。好消息是,产品团队已考虑了功能要求,并且新功能已在路线图中。 (也许正在制定2020年第三季度计划)
据那里的团队说:他们在这里考虑的新功能的范围是能够将一个阶段标记为“总是手动开始”。如果还有其他阶段依赖于此阶段,那么这些阶段将继续等待,直到该阶段执行为止。
我们可能需要等待一段时间才能在Yaml管道中实现manual trigger
功能。希望新功能能够满足您的需求。
答案 1 :(得分:0)
Microsoft表示其团队内部使用 Release Flow 分支策略:Release Flow: How We Do Branching on the VSTS Team
Release Flow意味着必须创建release分支以触发发布,这看起来可能是这样的:
版本/ productname-sprint02
因此,创建这样的分支可以充当手动触发器
在多阶段YAML管道中,当管道执行是发布分支上下文时,应将生产部署阶段编码为触发,这并不难使用condition:
和包含检查的表达式来完成:
${{ startsWith(variables['Build.SourceBranch'], 'refs/heads/releases')
p.s。我最近在类似主题上的博客:Azure DevOps – YAML pipelines and branching strategies