繁体   English   中英

将现有(整个)Azure DevOps 管道迁移到基于 YAML 的管道(批量)

[英]Migrating existing (entire) Azure DevOps pipeline to YAML based pipelines (in bulk)

我想将现有的 Azure DevOps 管道移动到基于 YAML 的明显优势。 问题是有很多这样的人,每一个都有很多工作。

当我在 Azure DevOps 中四处点击时,“查看 YAML”链接一次仅显示一项作业。 因此,查看每个管道 x 作业的 YAML 并将其移动到代码中将需要大量手动工作。

但是对于每个管道,似乎都有一种方法可以在 json 中“导出”整个管道。 我想知道如果不是整个文件夹,是否有类似的方法至少将整个管道转储为 YAML。

如果有一个 API 可以导出相同的内容,那就更好了。

到目前为止,我们支持的就是您所看到的,使用View YAML复制/粘贴代理作业的定义。 获取一个管道的整个定义还有另一种解决方法是使用 API 从构建定义中获取JSON将其转换为 YAML ,调整语法,然后根据需要更新引用的任务。

在此处输入图片说明

  • 将 YAML 复制到 Azure Devops 的 YAML 编辑器。 然后最重要的一步是调整语法。

用任务名称版本替换refName 键值 为此,你可以去我们在github中打开的tasks源代码,里面可以找到内置tasks(注意:请查看对应task的task.json文件)

注意:使用此方法还有一个缺点,即您需要非常熟悉 YAML 语法,以便您可以成功地调整从 JSON 转换的内容。

已完成,并且在devblogs上有关于将管道导出为 YAML 的博客文章

在此处输入图片说明

值得一提的是,新系统知道如何处理这里列出的每个功能:

  • 单个和多个工作
  • 结帐选项
  • 执行计划并行
  • 超时和名称元数据
  • 需要
  • 计划和其他触发器
  • 池选择,包括与默认不同的作业
  • 所有任务和所有输入,包括优化默认输入
  • 作业和步骤条件
  • 任务组展开

事实上,我们知道只有两个领域没有被涵盖。

变量

YAML 中定义的变量“阴影”(隐藏)在 UI 中设置的变量。 因此,我们不想将它们导出到 YAML 文件中,以防您需要能够在运行时更改它们。 如果您的经典管道中有 UI 变量,我们会在注释中按名称提及它们,以提醒您需要在新的 YAML 管道定义中配置它们。

时区翻译

YAML 中的 cron 计划采用 UTC,而 Classic 计划采用组织的时区。 时区处理有很多锋利的边缘,所以我们选择不尝试变得聪明。 我们在不进行任何翻译的情况下导出计划,因此除非您手动修改它们,否则您计划的构建可能会关闭一定的小时数。 再次,我们在评论中做个注释以提醒您。

但是不支持发布管道:

没有这样做的计划。 经典 RM 管道在它们的执行上有很大的不同,我无法像使用经典 Build 那样对正确性做出同样强有力的保证。 此外,在 RM 和统一 YAML 管道之间重新思考了许多概念。 在某些情况下,RM 功能没有直接翻译。 人类需要考虑管道的设计目的是为了完成并使用新的构造重新实现它。

我试过 yamlizr https://github.com/f2calv/yamlizr它非常适合导出发布管道,除了它不导出前/后部署条件。 我们将这些用于审批门。 所以希望在未来的版本中它会得到支持。 但是对于微软来说,他们不支持将发布管道导出到 YAML 听起来像。 https://devblogs.microsoft.com/devops/replacing-view-yaml/#comment-2043

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM