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


85

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

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

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

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

我们是否期望对发布管道功能进行升级以支持YAML?


很快,在Build 2019上:youtube.com/watch?v=ORy3OeqLZlE多阶段管道(以及Release YAML)现在处于预览状态。在“预览功能”菜单项中启用它。
nullforce,

2
有人可以帮助我理解为什么这个问题是题外话吗?对我来说,这似乎是stackoverflow的好问题。
托布斯克

Answers:


58

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

https://docs.microsoft.com/zh-cn/azure/devops/release-notes/

更新:这已经被碰了好几次了。建议您检查以下评论,因为人们一直在找到他们时提供更新。

更新资料

根据注释,现在可以: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

9
现在在2018年第4季度功能中。
sschoof


6
我昨天通过推特联系了我。目前正在处理YAML版本定义,以期在3月底前进入私有预览。全线程请访问twitter.com/gopinach/status/1088320931745935360?s=21
rh072005



6

YAML构建管道的创建经验正在预览中。(今天是2018-12-04)

用于发布管道的YAML似乎还有一段路要走:2019年第二季度

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

个人资料菜单

YAML功能

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

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


3
这个问题问的是发布管道,而不是构建管道。您指定的预览功能仅打开Build管道YAML。
nullforce

@nullforce谢谢,我已经将您的更正添加到我的答案中,如果为发布管道启用了此功能,或者当yaml也退出预览时,它将尝试使其保持最新。
吉姆·沃尔夫

1
它仍然不可用。
ATL_DEV

@ATL_DEV您可以详细说明一个状态,还是有关此的资源链接,以便我可以纠正答案。对我来说,它似乎可用:文档
Jim Wolff

@Jim Wolff-微软是骗子!发行和部署部分只能通过糟糕的UI进行配置。
ATL_DEV

5

产品团队正在努力。您可以通过发行说明跟踪更新。


1
一年后“产品团队”没有做任何事情。Azure Dev Ops UI仍然很糟糕,尽管部署了所有空洞的承诺,但Yaml对Deployment的支持仍然不存在。该文档不存在,并且分散在整个网络中,Azure Dev Ops很有用!微软应该找到其他事情要做,
ATL_DEV '19

仅出于技术准确性的考虑-尽管该评论于2019年11月发布,称YAML对部署的支持``仍不存在'',但实际上已于2019年5月添加到Azure DevOps(无空间)。其他答案和评论对此有更多了解。只是想确保阅读此书的人得到了错误的想法。
MikeBaz-MSFT

嗨,你能回答这个问题吗?stackoverflow.com/questions/64546693/...
alansmith4785

4

我目前正在做这样的事情,但是我正在使用当前的REST API。我正在做的事情与此处记录的内容相似(如何在VSTS中导入版本定义?)。基本上,我将模板化的JSON Release Pipeline文件保存到带有可变占位符和嵌入式版本号的源代码存储库中。然后有一个正在调用Azure DevOps的PowerShell脚本(这是一个很长的字眼,我更喜欢输入VSTS,也许我会开始输入AD)

  • 用于检查发布管道的REST API是否存在-工作
  • 如果不存在则创建-工作
  • 比较嵌入式版本和更新,并在必要时进行更新(我被困在这里,但我将解决它,返回错误,即使我已更改管道,但仍未更改正在更新的管道。)

我希望它在Build管道中执行,这样我就不再需要手动修改很多类似的Release管道。我也希望这也是一个YAML文件,但这就是我今天所拥有的。我希望这有帮助。


1
我陷入困境,并停止了在UPDATE流程上的工作。为什么?发布定义json模板的每个构建步骤都有一个ID。创建发布管道时,ID必须为特定编号。ID号在创建后被更改。因此,当您更新发布管道时,您将无法再使用“新的”阶段ID号(在最初创建发布管道时将保留它们),而是需要使用现在有效的阶段ID(可以是任何东西)。
Antebios

因此实际过程应该是:对于创建过程,请使用模板。对于更新过程,请下载版本定义并与模板进行比较,并更新下载的版本定义,然后将该版本更新回VSTS。ew!这意味着我需要编写自己的比较过程和错误检查。
Antebios

实际上,对于新的发行版定义(POST),您可以忽略该id属性-id对于发行版def对象,在所有 environment对象中都可以忽略-设置该rank属性就足够了(以及其他必需的设置)-POST调用应自动创建ID,然后返回响应对象。创建发布定义后,要在组织中获取所有定义,您可以执行LIST发布定义-此处
混淆了

-4

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


5
不要在您的帖子中添加签名;他们可能被视为垃圾邮件。
佐伊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.