我有以下 Azure YAML 管道文件,其阶段根据推送到 Azure 存储库的标记 some-tag-v*
引用执行。
trigger:
branches:
include:
- refs/tags/some-tag-v*
exclude:
- refs/tags/some-branch
pool:
name: some-name
demands:
- Agent.Name -equals some-name
stages:
- stage: A
jobs:
- job: A
steps:
- checkout: self
- bash: |
some-bash-commands
- stage: B
jobs:
- job: B
steps:
- bash: |
More-bash-commands
问题:我希望仅在推送 some-tag-2-v*
而不是 some-tag-v*
时执行阶段 B。我正在研究基于条件的触发,但我不确定这是否是正确的方法。
答案 0 :(得分:1)
我认为您可以使用 YAML conditions。
stages:
- stage: A
condition: ...
jobs:
- job: A
steps:
- checkout: self
- bash: |
some-bash-commands
对于条件,您可能可以利用管道和构建变量,例如:
variables:
isSomeTag: $[eq(variables['Build.SourceBranch'], 'refs/tags/some-tag-v')]
答案 1 :(得分:1)
我建议您可以直接在 Stages 中使用 IF Expression。这样会更方便。
这是一个例子:
trigger:
branches:
include:
- - refs/tags/some-tag-v*
exclude:
- refs/tags/some-branch
stages:
- ${{ if eq(variables['Build.SourceBranch'], 'refs/tags/some-tag-v') }}:
- stage: A
jobs:
- job: A
steps:
- checkout: self
- bash: echo 1
- ${{ if eq(variables['Build.SourceBranch'], 'some-tag-2-v') }}:
- stage: B
jobs:
- job: B
steps:
- bash: echo 2
当管道被 some-tag-2-v 触发时,它只会运行阶段 B。