与发布管道等效的YAML是什么?

时间:2020-08-17 15:16:26

标签: azure security deployment azure-devops azure-pipelines

我一直在研究Azure DevOps,但我感到有些困惑:Microsoft似乎强烈建议使用YAML管道而不是经典管道。足够公平,但是他们需要替换经典管道中的所有功能。我该如何用YAML管道替换“发布管道”功能?

因此,例如,使用经典的发布管道,我可以设置管道以将其部署到具有手动触发器的生产中(请参阅“由用户手动”):

https://docs.microsoft.com/en-us/azure/devops/pipelines/release/triggers?view=azure-devops#pull-request-triggers

与此等效的YAML管道是什么?我显然不希望触发器自动部署到生产环境中-我一直希望严格​​地手动启动部署-但是帮助文章似乎没有提供任何YAML替代方案。

2 个答案:

答案 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