我是 Azure Devops 中 YAML 构建管道的新手,我正在尝试围绕触发器功能进行思考。困扰我的是我想在不同的分支上使用不同的触发器,但我想使用相同的管道。
可以说我想要
我很困惑,因为 yaml 文件也被检入了 Git。我读到,如果你有预定的触发器,你也不能有 CI 触发器。
我需要有两个 .yml 文件吗?一个定义每个?重复所有步骤似乎不酷
或者我应该在每个分支中拥有相同文件的不同版本?这不会在某个时候合并吗?
额外问题:如果您在 Developemt 分支上推送构建管道并在 master 上触发会怎样? (呃,我头晕了)
最佳答案
Do I need to have two .yml files? One defining each? Seems not cool to repeat all the steps
经过一段时间的研究,我个人建议你最好用两个
.yml
具有不同构建管道的文件。最直销 问题是关于
master
的代码分支和development
分支不是实时同步的。当两个分支上的代码不同时,构建的结果也不同。如果它们在同一个管道中,我们需要手动 检查构建失败时错误来自哪个分支。这是一件痛苦的事情。另一个 深问题是我们可以定义
CI trigger
和 Scheduled trigger
在一个 yaml 文件中,例如:trigger:
branches:
include:
- master
schedules:
- cron: "* 10 * * *"
always: true
displayName: Daily midnight build (UTC 22:00)
branches:
include:
- Development
为此,我们需要在
Development
上设置此 yaml分支。如果我们更改 master 分支中的任何代码,它将触发此管道。 然而 ,它只在 Development
上构建代码分公司,它不包括 master 中更改的代码.所以这个 CI 触发器将毫无意义。should I have different version of the same file in each branch? Won´t this get merged at some point?
个人建议你最好使用不同名称的不同yaml文件。就像你说的,同样的文件在后面的分支合并中容易出现不必要的风险。
My bonus question was more like: Are you suppose to keep different version of your build pipeline in different branches? I mean if i want to build develop branch each time i push to develop can this trigger be defined in the master branch version of the yaml file?
答案是肯定的。您可以使用 中的简单语法设置 CI 触发器。大师 yaml 文件的分支版本:
trigger:
branches:
include:
- master
- Development
使用此设置,每次推送到 develop 分支时都会触发在 yaml 文件的 master 分支版本中定义的构建。
注意:对于您的额外问题,如果我们在 CI 触发器上面设置,管道将由于
dev
上的持续提交而触发构建。分支。有时我们只是修改了一个readme文件,我们不希望这样的修改触发不必要的构建,解决此类问题的最好方法是使用 PR trigger .希望这可以帮助。
关于azure-devops - 在 Azure Devop 中触发 YAML 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61541723/