我们现在正在迁移到组织中的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中是否有可能,以及您是否可以向我推荐更好的方法。
谢谢
答案 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。