首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何结合Azure管道中的Git分支和标记触发器

如何结合Azure管道中的Git分支和标记触发器
EN

Stack Overflow用户
提问于 2020-05-22 11:16:11
回答 2查看 1.1K关注 0票数 0

上下文

Azure管道支持不同类型的CI触发器(文档)。

例A:

代码语言:javascript
复制
trigger:
  branches:
    include:
    - master

如果主分支中检测到新提交,则管道将运行。

例B:

代码语言:javascript
复制
trigger:
  branches:
    include:
      - refs/tags/v*

如果检测到以v开头的新标记,管道将运行。

当上述两个条件都为true时,我希望我的管道能够运行:分支和标记。

示例C(不按需要工作):

代码语言:javascript
复制
trigger:
  branches:
    include:
    - master
    - refs/tags/v*

将这两个触发器组合起来似乎是一种或-条件,而不是和条件。

问题

只有在有新的master标记时,我才能在v*分支上触发管道?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-22 12:12:09

在我看来,这是不可能的。跟随文档

如果结合包含文件路径的分支筛选器指定标记,则如果满足分支筛选器,并且满足标记或路径筛选器,则触发器将触发。

不幸的是,在这里添加条件是没有帮助的,因为我们没有足够的信息。例如,对于tag触发器,我们有

代码语言:javascript
复制
BUILD_SOURCEBRANCH=refs/tags/release-07
BUILD_SOURCEBRANCHNAME=release-07

对于branch触发器来说:

代码语言:javascript
复制
BUILD_SOURCEBRANCH=refs/heads/master
BUILD_SOURCEBRANCHNAME=master

即使您尝试使用git branch手动检查分支名称,您也会得到:

代码语言:javascript
复制
* (HEAD detached at 154ce86)

对我来说,这是开发者社区特性请求的一个很好的候选。

票数 3
EN

Stack Overflow用户

发布于 2020-06-05 11:25:06

我找到了一种通过使用模板和参数来实现这一点的方法。

示例

首先,创建一个具有参数化任务和脚本的common.yaml

代码语言:javascript
复制
parameters:
  - name: myMessage
    type: string
    default: 'Hello from template!'
  - script: |
      echo ${{ parameters.myMessage }}

此yaml可以包含任意数量的参数、共享任务和脚本。

然后,为主分支创建一个master.yaml

代码语言:javascript
复制
trigger:
  branches:
    include:
    - master
extends:
  template: common.yml
  parameters:
      myMessage: 'Hello from master!' # Overrides default parameter value

为每个新版本标记创建另一个tags.yaml

代码语言:javascript
复制
trigger:
  branches:
    include:
    - refs/tags/v*
extends:
  template: common.yml
  parameters:
      myMessage: 'Hello from tags!' # Overrides default parameter value

最后,在Azure DevOps web界面中创建两个管道。将一个管道连接到master.yaml,另一个连接到tags.yaml

使用此设置,每个触发器都独立于最小的yaml复制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61953776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档