根据签出的分支/标签使用不同的天蓝色管道模板

时间:2020-07-15 11:33:02

标签: azure-pipelines

我们现在正在迁移到组织中的Azure管道,我们将使用模板机制来集中更改构建逻辑。

请参阅下面的当前示例。

name: $(Date:yyyyMMddHHss).$(SourceBranchName).$(Build.SourceVersion)

resources:
  repositories:
  - repository: build_resources  # id for reuse in below script code
    type: git  # use 'git' for Azure git repository
    name: build-resources  # repository name
    ref: refs/tags/1.1.2

jobs:
- template: build/azure-pipelines-template.yml@build_resources  # Template reference
  parameters:
    projectfolder: 'blabla'

这将始终签出构建模板的特定版本。

我们现在要实现以下目标: 当检出的分支为“ develop”时,应始终使用构建模板的最新版本。但是,当我们说一个“发布”分支甚至一个标签正在构建时,则应使用一个固定版本的构建模板。

我的想法是在YAML中使用一些字符串处理,然后选择其他存储库资源。但是我不确定在YAML中是否有可能,以及您是否可以向我推荐更好的方法。

谢谢

2 个答案:

答案 0 :(得分:0)

未经测试;但是,您是否考虑过使用类似的东西:

resources:
  repositories:
  - repository: build_resources  # id for reuse in below script code
    type: git  # use 'git' for Azure git repository
    name: build-resources  # repository name
    ${{ if eq(variables['Build.SourceBranchName'], 'develop') }}:
      ref: 'refs/tags/newest'
    ${{ if ne(variables['Build.SourceBranchName'], 'master') }}:
      ref: 'refs/tags/stable'

我在这里找到了一个很好的例子:ADO Pipeline - Expressions - Conditional Insertion

答案 1 :(得分:0)

您可以根据条件从管道YAML调用不同的模板。在此示例中,运行分支测试时将运行stable.yml YAML。

stable.yml

steps:

- script: echo "stable.yml"

experimental.yml

steps:

- script: echo "experimental.yml"

YAML代码:

steps:

- ${{ if eq(variables['Build.SourceBranchName'], 'develop') }}:

  - template: experimental.yml

- ${{ if eq(variables['Build.SourceBranchName'], 'release') }}:

  - template: stable.yml

有关更多详细信息,请参阅此doc