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

标签 azure azure-devops yaml azure-pipelines

我有一个关于 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 the HEAD 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/

相关文章:

python - 如何指定 Microsoft Azure Jupyter Notebooks 的路径?

azure - Azure Function 中没有从表到 ITableEntity 的隐式引用转换

azure - 创建 Azure Active Directory 应用程序需要什么权限?

java - 如何使用JavaBuilders创建JFreeChart控件?

shell - 如何将yaml文件格式化为csv格式?

azure-devops - 导航到 azure devops 构建服务器中的构建源目录

azure - 使用 Bicep 将 UserDefinedFunction 与 Azure Cosmos DB 一起部署

Azure:应用服务:部署虚拟目录

azure-devops - 如何在部署新版本之前检查以前的版本是否已完成

azure - 如何从 powershell 使用构建管道上使用的 *.pfx 证书以及下载安全文件任务