使用Azure DevOps,如何将发布管道迁移到代码中,类似于构建管道的YML?

10
如果我没记错的话,Azure DevOps计划增加一项功能,允许将发布流程放置在yaml中,类似于构建流水线。这个功能已经可用了吗?
我希望能得到一些关于如何迁移传统的经典发布流程到新格式的指导。
更新:看起来我只落后了约4个月。发布于2019年5月6日。
引用: 我们的新更新使开发团队现在可以利用相同的YAML文档为CI和CD构建多阶段管道即代码。这是我们客户最大的要求之一。
以下是一些有用的链接,适用于像我这样手动创建了许多经典发布流程,并对新格式感兴趣的人。

https://azure.microsoft.com/en-us/updates/unified-pipelines/

https://azure.microsoft.com/en-us/blog/accelerating-devops-with-github-and-azure/


你看过文档了吗?它涵盖了这个问题。 - Daniel Mann
我现在正在查看文档。这是今年的一个新功能。 - Judy007
首先,感谢@joey发布这个问题。其次,是的,对于一个仍在快速发展的主题提出问题确实很困难。Azure DevOps甚至可能会放弃YAML方法并转向其他方法...谁知道呢。 - BozoJoe
3个回答

7
我发现微软提供了一些内置帮助,以将经典基于GUI的发布管道迁移到基于YAML的管道。
如果您编辑经典的基于GUI的发布管道并深入到任务中,右上角会有一个名为“查看YAML”的链接:

Task in a Release pipeline showing the View YAML link

点击链接将生成与任务相关的YAML。不幸的是,它不包括字段值。相反,它使用变量并且不指定这些变量的值:

steps:
- task: IISWebAppManagementOnMachineGroup@0
  displayName: 'IIS Web App Manage'
  inputs:
    IISDeploymentType: '$(Parameters.IISDeploymentType)'
    ActionIISWebsite: '$(Parameters.ActionIISWebsite)'
    WebsiteName: '$(Parameters.WebsiteName)'
    WebsitePhysicalPath: '%SystemDrive%\inetpub\wwwroot\AspNetDemo'
    AddBinding: '$(Parameters.AddBinding)'
    Bindings: '$(Parameters.Bindings)'
    ParentWebsiteNameForVD: '$(Parameters.WebsiteName)'
    VirtualPathForVD: '$(Parameters.VirtualPathForApplication)'
    ParentWebsiteNameForApplication: '$(Parameters.WebsiteName)'
    VirtualPathForApplication: '$(Parameters.VirtualPathForApplication)'
    AppPoolName: '$(Parameters.AppPoolName)'

幸运的是,GUI 中的任务对大多数字段都有链接,提供了特定于字段的帮助。该帮助提到了哪个变量映射到字段值:

Task in a Release pipeline showing the help linked to a field, highlighting the variable that maps to the field

所以你可以逐个检查任务中的每个字段,确定每个字段对应哪个变量,从而计算出要添加到YAML片段中的值。虽然有点费力,但比试图从头开始弄清楚所有内容要快得多。不幸的是,在作业或阶段级别上似乎没有查看YAML的方法,只能在任务级别上查看。因此,您需要为每个任务重复此过程。您还需要自己找出定义阶段和作业的YAML。

微软的文档对此并不清晰。我在某个地方读到,你可以在代理级别查看YAML,但我找不到这个选项。微软的文档让人感到困惑。参考文档:https://learn.microsoft.com/en-us/azure/devops/pipelines/migrate/from-classic-pipelines?view=azure-devops https://devblogs.microsoft.com/premier-developer/converting-classic-azure-devops-pipelines-to-yaml/ - SijuMathew

6

对于迁移经典发布管道,Azure DevOps 仍然缺乏一些更直观的支持。

但是有一个外部工具,yamlizr,可以帮助迁移许多发布管道。

在我的情况下,我不得不稍微修改一下这个工具(如果它们仍然开放,请参阅其问题)。

结果还没有准备好用于生产,但从我的角度来看,它仍然是一个很好的起点,并且非常有帮助。


0

感谢您在此分享解决方案,您可以将其接受为答案,这样可以帮助其他遇到相同问题的社区成员,并且我们可以归档此线程,谢谢。 - Hugh Lin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接