是否可以根据某种模板表达选择性地包含模板?具体来说,我希望azure-pipelines.yml中的顶级定义可以指出要在包含的阶段模板中使用的构建作业模板:
azure-pipelines.yml:
stages:
- template: generic-build-stage.yml # Template reference
parameters:
# Example of optional build templates to use
buildTypes: [SpecificBuildJobs1, SpecificBuildJobs3, SpecificBuildJobs4]
generic-build-stage.yml:
parameters:
buildTypes: ???
stages:
- stage: generic_build
jobs:
${{ }} # ???? What goes here to include the appropriate templates
- template: ???
理想情况下,上面的模板表达式将扩展为:
jobs:
- template: specific-build-jobs1.yml
- template: specific-build-jobs3.yml
- template: specific-build-jobs4.yml
编辑:docs中的“迭代插入”示例似乎表明某种形式的动态解析时插入是可能的。
答案 0 :(得分:0)
这似乎是不可能的,因为模板引用是在解析时解析的。
您可能必须为主管道设置多个模板,并将>>> divisible_by_7([4,8,21,6])
True
>>> divisible_by_7([1,2,8,9])
False
的值设置为作业模板的特定模板名称,并在buildTypes
中使用generic-build-stage.yml
调用相应的作业模板;
Azure-pipelines.yml:
- template:${{parameters.buildTypes}}.yml
generic-build-stage.yml
stages:
- template: generic-build-stage.yml
parameters:
buildTypes:specific-build-jobs1
- template: generic-build-stage.yml
parameters:
buildTypes:specific-build-jobs3
答案 1 :(得分:0)
以下方法可以使顶级管道定义在较低级别消耗可变数量的作业集。
azure-pipelines.yml:
stages:
- template: generic-build-stage.yml # Template reference
parameters:
# Example of optional build templates to use
buildTypes: [SpecificBuildJobs1, SpecificBuildJobs3, SpecificBuildJobs4]
generic-build-stage.yml:
parameters:
buildTypes: [MissingBuildType] # Use this if buildTypes is not provided
stages:
- stage: build_stage
jobs:
# Note: VS Code extension for Pipelines (1.1574.4) will
# say this is an "Unexpected property", but this works in ADO
- ${{ if containsValue(parameters.buildTypes, 'MissingBuildType') }}:
- template: build-stage-null.yml
- ${{ if containsValue(parameters.buildTypes, 'SpecificBuildJobs1') }}:
- template: specific-build-jobs1.yml
- ${{ if containsValue(parameters.buildTypes, 'SpecificBuildJobs2') }}:
- template: specific-build-jobs2.yml
- ${{ if containsValue(parameters.buildTypes, 'SpecificBuildJobs3') }}:
- template: specific-build-jobs3.yml
- ${{ if containsValue(parameters.buildTypes, 'SpecificBuildJobs4') }}:
- template: specific-build-jobs4.yml