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

joe*_*oey 10 azure azure-devops

如果我没记错的话,Azure Devops 设置为添加一项功能,允许将发布管道放入 yaml 中,类似于构建管道。这个功能现在可用吗?

我希望获得有关将遗留经典发布管道迁移到新格式的指导?

更新:看起来我只落后了大约 4 个月。发表于 2019 年 5 月 6 日

通过我们的新更新,开发团队现在可以利用相同的 YAML 文档为持续集成和持续交付构建多阶段管道即代码。这是我们客户最大的要求之一

对于像我这样的人来说,这里有一些有用的链接:手动创建了许多经典的发布管道,对新格式感兴趣。

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

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

Sim*_*wsi 7

我发现 Microsoft 提供了一些内置帮助来将发布管道从经典的基于 GUI 的发布管道迁移到基于 YAML 的管道。

如果您编辑基于 GUI 的经典发布管道并向下钻取任务,则右上角有一个链接,显示View YAML

发布管道中的任务显示查看 YAML 链接

单击该链接会生成与该任务关联的 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)'
Run Code Online (Sandbox Code Playgroud)

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

发布管道中的任务显示链接到字段的帮助,突出显示映射到该字段的变量

因此,您可以遍历任务中的每个字段,确定哪个变量对应于每个字段,从而确定要添加到 YAML 片段中的值。

这有点费力,但比尝试从头开始解决所有问题要快。

不幸的是,似乎没有任何方法可以在作业或阶段级别查看 YAML,只能在任务级别查看。因此,您必须为每个任务重复该过程。您还必须自己制定定义阶段和作业的 YAML。


Fré*_*ric 6

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

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

就我而言,我不得不对这个工具进行一些修改(如果它们仍然打开,请查看它的问题)。

结果尚未准备好投入生产,但从我的角度来看仍然是一个很好的起点,并且有很大帮助。