如何防止基于提交标记触发 Azure DevOps 构建管道?

aca*_*a69 7 azure-devops azure-pipelines

我在基于 Github 的项目中使用 Azure 管道。我设置了一个仅由标记提交触发的构建管道,以使其与每次提交时发生的自动日常构建分开。

我想从触发每日构建管道中排除标记的提交。在 yaml 脚本中这样做的正确方法是什么?

这是我所做的,但没有成功。

根据此页面上的 Azure 文档,据我所知,应该可以使用以下内容排除标签:

trigger:
  tags:
    exclude:
    - projectname_v*
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,只会阻止构建管道在任何提交时运行,无论是否标记。

我也试过:

trigger:
  tags:
    include:
    - *
    exclude:
    - projectname_v*
Run Code Online (Sandbox Code Playgroud)

但这显然不受支持,因为它会产生错误:

/azure-pipelines.yml: (Line: 12, Col: 7, Idx: 220) - (Line: 12, Col: 8, Idx: 221): While scanning an anchor or alias, did not find expected alphabetic or numeric character.
Run Code Online (Sandbox Code Playgroud)

我还尝试了文档页面上提出的替代语法:

trigger:
  branches:
    exclude:
      refs/tags/{projectname_v*}
Run Code Online (Sandbox Code Playgroud)

以及带/不带大括号和通配符的变体,但都因“意外值”或“输入字符串格式不正确”错误而失败。

编辑 2019-12-10

阅读下面 wallas-tg 的回答后,我在日常构建管道中尝试了以下内容:

trigger:
  branches:
    include:
    - '*'
    exclude:
    - 'refs/tags/*'
Run Code Online (Sandbox Code Playgroud)

这有效,但不符合我的意愿:

  • 仅推送一个标签会触发正确的管道,而不是用于日常构建的管道
  • 推送没有标签的提交会触发每日构建管道
  • 推送标记的提交会触发两个管道:每日构建管道由提交触发,另一个由标记触发;在这种情况下,我想要的行为是不触发每日构建管道。

小智 1

@acasta69

我认为我找到了您问题的解决方案。我一直在做相反的场景,仅构建功能分支并排除其他任何内容。

为此,请在 azure-pipelines.yml 上使用此 yml 片段

resources:         
  repositories:
  - repository: myNetProject
    type: GitHub
    connection: myGitHubConnection
    source: wkrea/DockerHubImages
    trigger:
      batch: true
      branches:
        include:
        - releases/*
        exclude:
        - '*'
      paths:
        exclude:
        - README.md
Run Code Online (Sandbox Code Playgroud)

我能够在 DevOps 的基础上进行构建

构建成功触发

如果这个答案对您有用,请让我知道评论并对我的答案进行评分,以便下次有人需要帮助时更容易找到答案,因为 DevOps Pipelines 文档目前确实不清楚且令人困惑:'(

releases在这里您可以看到我在分支上的最后一次提交的检查

在此输入图像描述