在Azure DevOps中使用多个YAML构建流程

79
我目前正在尝试使用新的YAML方式在Azure DevOps为我的Angular应用创建多个构建管道。 以前我使用“传统”的可视化构建程序为我设置的不同环境(开发、暂存、生产)创建新的构建管道。
但是自从我转换到YAML风格的构建定义后,每次尝试创建新的管道时都会被重定向到现有的azure-pipelines.yml。据我所知,根据文档,无法在单个.yml文件中定义多个管道。
目前Azure DevOps是否支持这种情况?

1
YAML应支持在同一文件中包含多个文档。只需在文档之间添加3个破折号即可,例如:

文档1

文档2
- Cedervall
3个回答

60

@4c74356b41的答案是正确的,但现在您可以使用不同的yaml文件创建许多构建配置,并且可以进行持续集成而无需创建手动构建。

在新的管道流程中,请按照以下步骤操作:

1.选择代码所在位置:

step1

2. 选择您代码的存储库(其中包含yml文件):

step2

3. 在配置管道中,选择现有的Azure Pipelines YAML文件

step3

4. 选择分支和路径,找到yaml文件,然后继续:注意:如果没有显示,请确保您的文件具有.yml扩展名

step4

5. 最后点击RUN按钮。

注意:按照这种方式创建管道后,将启用持续集成,但如果您仍然希望进行手动构建,请按照以下步骤操作:

选择您的构建,然后选择触发器:

step5

然后禁用持续集成:

step6

甚至更简单的做法是,在您的yaml文件中添加一行trigger: none

1
PR触发器和CI触发器有什么区别? - Hari Kiran
1
把它看作:CI始终如一,对于所有分支、PR,只有在你创建或更新与PR相关的分支时才会执行。在新的多阶段管道中更容易 :), 你可以从你的yaml文件中配置一切。 - David Noreña
假设我从个人分支创建PR到dev分支,并且在yaml文件中将pr触发器设置为dev分支,这是否意味着每次我向dev分支创建PR时,都会启动PR构建? - Hari Kiran
哦,你说得对,我忘了说你不能从YAML配置PR,你需要从BRANCH POLICY配置,这样PR将从您设置策略的任何分支构建。另一方面,YAML有一个配置来在CI模式下包括一些分支。 - David Noreña
1
感谢您展示了如何为不同的流水线设置不同的.yml文件。正是我所需要的! - Tommy Leong
@TommyLeong 很高兴它对你有用! :) - David Noreña

44

它是受支持的。azure-pipelines.yml被VSTS自动捕捉到,您可以创建多个yaml文件并为其手动创建构建。这是唯一的区别。

因此,您需要使用不同的yaml文件为不同的环境手动创建构建。

输入图像描述

在构建步骤选择中选择此选项:

输入图像描述


我刚刚在源代码的根目录下添加了一个新的.yml构建定义,并将其合并到我的主分支,但它没有显示出来。另外,我该如何命名管道? - Thomas
你只需要像平常一样手动创建一个新的构建。 - 4c74356b41
13
哦,所以你需要使用不支持YAML的可视化构建器来选择你手动创建的YAML文件。好吧,这很令人困惑......不过还是谢谢。 - Thomas
这也是如何指定 .azure-pipelines.yml 的方法,如果更喜欢点名称而不是默认的 azure-pipelines.yml - mloskot
21
如果你有兴趣,我已经创建了一篇详细的博客,逐步介绍如何执行此操作。博客链接为 https://sethreid.co.nz/using-multiple-yaml-build-definitions-azure-devops/。 - sethreidnz

15

流程已更改。从2020年6月开始,步骤如下:

步骤1 - 从流水线中,点击 新建流水线

这里输入图片描述

步骤2 - 选择源、仓库和默认的流水线类型后,通过此处重命名流水线YAML文件:

这里输入图片描述

步骤3 - 点击重命名/移动来重命名流水线:

这里输入图片描述


这对我来说是个问题。保留默认的-1.yml会破坏我的现有流水线,而添加的则无法运行。重命名它可以解决问题。 - Gavin Thomas

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