Azure DevOps、YAML 发布管道? [关闭]

Posted

技术标签:

【中文标题】Azure DevOps、YAML 发布管道? [关闭]【英文标题】:Azure DevOps, YAML release pipelines? [closed] 【发布时间】:2019-02-18 17:47:19 【问题描述】:

我正在按照此流程为 .NET Core Web API 项目创建 YAML 构建管道:

https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started-yaml?view=vsts

在发布它时,我注意到(最近重命名的)Azure DevOps 似乎不支持 YAML 来定义发布管道。但是,我可以看到已经定义了部署任务,例如:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-rm-web-app-deployment?view=vsts

我们是否希望升级发布管道功能以支持 YAML,如果是,何时升级?

【问题讨论】:

很快,在 Build 2019 中:youtube.com/watch?v=ORy3OeqLZlE 多阶段管道(和发布 YAML)现在处于预览状态。在“预览功能”菜单项中启用它。 有人可以帮助我理解为什么这个问题是题外话吗?对我来说,*** 似乎是个好问题。 【参考方案1】:

在撰写此回复时,功能时间表反映 yaml 版本将于 2018 年第三季度发布。

https://docs.microsoft.com/en-us/azure/devops/release-notes/

更新:这已经被撞了几次。建议检查下面的 cmets,因为人们在找到它们时会提供更新。

更新

根据 cmets,这现在是可能的: https://devblogs.microsoft.com/devops/whats-new-with-azure-pipelines/。以下是从文章中复制和粘贴的,并使用各个阶段进行演示:

stages:
- stage: Build
  jobs:
  - job: Build
    pool:
      vmImage: 'Ubuntu-16.04'
    continueOnError: true
    steps:
    - script: echo my first build job
- stage: Deploy
  jobs:
    # track deployments on the environment
  - deployment: DeployWeb
    pool:
      vmImage: 'Ubuntu-16.04'
    # creates an environment if it doesn’t exist
    environment: 'smarthotel-dev'
    strategy:
      # default deployment strategy
      runOnce:
        deploy:
          steps:
          - script: echo my first deployment

【讨论】:

现在是 2018 Q4 Features。 有一个工作项来跟踪这个dev.azure.com/mseng/Azure%20DevOps%20Roadmap/_workitems/edit/… 我昨天通过推特联系了我。目前正在研究 YAML 发布定义,目标是在 3 月底前进入私人预览版。 twitter.com/gopinach/status/1088320931745935360?s=21的完整线程 跟踪此的最新工作项 - dev.azure.com/mseng/AzureDevOpsRoadmap/_workitems/edit/1364226 终于! devblogs.microsoft.com/devops/whats-new-with-azure-pipelines 2019 年 5 月 7 日【参考方案2】:

YAML build 管道创建体验处于预览阶段。 (今天是2018-12-04)

用于 release 管道的 YAML 似乎还有一段路要走:2019 Q2

可以从您的个人资料中启用预览功能,如下所示:

编辑:正如 nullforce 在 cmets 中指出的那样,这只会为构建管道而不是发布管道启用 YAML 体验。

更新(2019-05-16):继 Microsoft 的“Build 2019”之后,现在应该可以在同一个 YAML 管道文件中获得构建和部署的完整 YAML 体验。

【讨论】:

这个问题询问的是发布管道,而不是构建管道。您指示的预览功能仅打开构建管道 YAML。 @nullforce 谢谢,我已将您的更正添加到我的答案中,如果为发布管道启用此功能或当 yaml 不再预览时,我会尽量保持最新。 它仍然不可用。 @ATL_DEV 您能否详细说明一个状态,或链接到与此相关的资源,以便我更正答案。在我看来,它似乎可用:docs @Jim Wolff——微软是骗子!发布和部署部分只能通过其糟糕的 UI 进行配置。【参考方案3】:

产品团队正在努力。您可以通过Release notes 跟踪更新。

【讨论】:

“产品团队”在 1 年后没有做任何事情。 Azure Dev Ops UI 仍然很糟糕,而且对 Deployment 的 yaml 支持仍然不存在,尽管做出了所有空洞的承诺。文档不存在并且分散在整个网络中,Azure Dev Ops 使用起来很糟糕!微软应该找点别的事情做, 仅出于技术准确性的考虑 - 尽管 2019 年 11 月发布的评论称 YAML 对部署的支持“仍然不存在”,但它实际上已添加到 Azure DevOps(没有空格) 2019 年 5 月。其他答案和 cmets 对此有更多了解。只是想确保阅读本文的人得到错误的想法。【参考方案4】:

此时此刻,我正在做类似的事情,但我正在使用当前的 REST API。我正在做的事情类似于我在此处记录的内容 (How do you import a release definition in VSTS?)。基本上,我将模板化的 JSON 发布管道文件保存到源代码存储库中,其中包含变量占位符和嵌入的版本号。然后有一个调用 Azure DevOps 的 PowerShell 脚本(这个词很长,我更喜欢输入 VSTS,也许我会开始输入 AD)

存在用于检查发布管道的 REST API - 有效 如果不存在则创建 - 有效 比较嵌入式版本并在必要时进行更新(我卡在这里,但我会解决它,返回错误,即正在更新的管道没有改变,即使我已经改变了它。)

我希望它在构建管道期间执行,以便我不再需要手动修改许多类似的发布管道。我也希望这是一个 YAML 文件,但这就是我今天所拥有的。我希望这会有所帮助。

【讨论】:

我被困住了,并停止了我在更新过程中的工作。为什么?发布定义 json 模板的每个构建步骤都有一个 ID。创建发布管道时,ID 必须是特定数字。 ID 号在创建后会更改。因此,当您更新发布管道时,您不能再使用“新”阶段 ID 编号(它们在最初创建发布管道时被保留),而是您需要使用现在有效的阶段 ID,可以是任何东西。跨度> 所以实际过程应该是:对于创建过程使用模板。对于更新过程,下载发布定义并与模板进行比较,更新下载的发布定义,然后将其更新回 VSTS。哇!这意味着我需要编写自己的比较过程和错误检查。 事实上,对于一个新的发布定义(POST),你可以忽略id属性 - id对于发布定义对象和所有environment对象都可以忽略 - 设置rank 属性应该足够了(连同其他必需的) - POST 调用应该自动创建 ID 并在响应对象中返回。创建发布定义后,要获取组织中的所有定义,您可以在发布定义上执行 LIST - GET 调用记录在 here【参考方案5】:

管道由一个或多个作业组成,可能包括资源和变量。作业由一个或多个步骤加上一些特定于作业的数据组成。步骤可以是任务、脚本或对外部模板的引用。这反映在 YAML 文件的结构中。详情请访问here

【讨论】:

不要在帖子中添加签名;它们可能被视为垃圾邮件。 注意这里远程尝试回答如何创建 YAML 发布管道而不是使用经典编辑器的管道......

以上是关于Azure DevOps、YAML 发布管道? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 中的多个 YAML 构建管道

Azure DevOps - 使用参数在 yaml 管道定义中设置路径触发器

如何在 yaml 中处理 Azure DevOps 管道中的错误?

请参阅使用 YAML 管道在 Azure DevOps 中构建工件

如何在 Azure DevOps yaml 管道中设置 ENVIRONMENT 状态

Azure DevOps Pipelines - 仅在上一次运行成功时运行 YAML 管道