如何设置基于标签的天蓝色管道阶段触发?

How to set Tags based azure pipeline stage triggering?

我有以下 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。我正在查看基于条件的触发,但我不确定这是否是正确的方法。

我认为你可以使用 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')]

我建议你可以直接使用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。