gpt4 book ai didi

azure - 使用提交触发器在 YAML 文件中触发 Azure Devops Pipeline

转载 作者:行者123 更新时间:2023-12-02 23:24:23 25 4
gpt4 key购买 nike

我有一个关于 DevOps 中 Pipline 触发器的问题。我和我的团队正在使用 Azure DevOps 来开发软件。我们使用分支特定触发器,仅在主分支中启动管道。 YAML 文件中的其他分支将被忽略。

我的问题的第一部分是,我们不知道如何通过 Git 工具中的提交消息触发管道。例如:“我们在与 Master 分支不同的分支中工作 --> 没有管道正在运行。但是我们想触发此分支中的管道以进行一次特定测试。我们的方法是在触发管道的提交文本。”

我的第二个问题是,是否可以在一个 YAML 文件中的不同分支中运行不同的阶段。这里又是一个例子:“在我们不同的分支中,我们只想在每次推送时运行我们的单元测试。在我们的主分支中,我们想要运行我们的单元测试,然后,我们想要构建我们的应用程序。

到目前为止,我们在每次推送时都会启动管道并每次都会构建一个新图像。但我们不希望这样,因为有些插入不起作用,而我们只是插入它。我们想要决定管道何时运行以及哪个阶段运行。

希望您能理解我的问题。如有其他问题,请在此发表评论。谢谢

最佳答案

问题1:

您可以考虑使用tag triggers去做这个。这是一个例子:

trigger:
branches:
include:
- master
tags:
include:
- test.*

然后,当在 master 分支上工作或提交标签为 test.* 时,将触发管道。

问题2:

您可以使用条件。这是一个例子:

condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))

将条件添加到您的阶段,然后该阶段将仅由master分支触发。

问题3:

So far, we started the pipeline at every push and build a new image everytime. But we dont want that, because some pushes aren't working and we just push it.

您可以skip CI for individual commits .

Just include [skip ci] in the commit message or description of theHEAD commit and Azure Pipelines will skip running CI.

更新1:

对于问题1,test.*表示以test.开头的标签,例如test.1 test.0.1,等等。您可以将 test.* 更改为您想要的任何内容。

对于您遇到的问题,您无法直接创建名为test.*的标签,因为标签名称中不能包含*

为了避免混淆,需要为提交创建一个标签来触发标签CI,而不是直接写在提交文本中。

想法

insert a specific command in the commit text to trigger the pipeline.

我认为目前不支持,标签触发器是一种替代方案。

点击this document有关 git 标签的详细信息。

更新2:

通过master分支或1620-to-PipelineTrigger分支触发阶段:

condition: or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), eq(variables['Build.SourceBranch'], 'refs/heads/1620-to-PipelineTrigger'))

每个阶段只能设置一个条件,但您可以使用 andor() 创建更复杂的条件.

点击this document获取有关条件的更多详细信息和示例。

关于azure - 使用提交触发器在 YAML 文件中触发 Azure Devops Pipeline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67197315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com