我正在使用扩展模板,并且我想在此仅使用另一个模板作为参数。 但是我无法,而且我不确定语法是否错误。 得到这个错误: /templatetest.yml(第8行,第1行):意外值'template'
#This is in parameter file in separate repo .policyparams.yml
parameters:
- name: runPerfTests
type: boolean
default: false
resources:
repositories:
- repository: MSLearnDocker
type: git
name: AzureCoreApp/MSLearnDocker
ref: refs/heads/master
template: policyparams.yml@MSLearnDocker
stages:
- stage: Build
displayName: Build
jobs:
- job: Build
steps:
- script: echo running Build
- stage: UnitTest
displayName: Unit Test
dependsOn: Build
jobs:
- job: UnitTest
steps:
- script: echo running UnitTest
- ${{ if eq(parameters.runPerfTests, true) }}:
- stage: PerfTest
displayName: Performance Test
dependsOn: Build
jobs:
- job: PerfTest
steps:
- script: echo running PerfTest
- stage: Deploy
displayName: Deploy
dependsOn: UnitTest
jobs:
- job: Deploy
steps:
- script: echo running UnitTest
如何在扩展模板中获取参数模板文件?
答案 0 :(得分:0)
This是您要寻找的东西,这些文档介绍了从模板扩展时如何使用参数。
简而言之,这意味着您可以在模板yaml文件中定义所有步骤,并传递扩展yaml文件中的参数值。请记住,您也可以将构建步骤作为参数传递,有关示例,请参见here。
有关您的案例的一些摘要,请参见下文。
名为TemplateRepo的存储库中的pipeline-template.yml
parameters:
- name: runPerfTests
type: boolean
default: false
steps:
- script: echo Current parameter value ${{ parameters.runPerfTests }}.
名为ExtendRepo的存储库中的azure-pipelines.yml
# File: azure-pipelines.yml
trigger:
- master
resources:
repositories:
- repository: TemplateRepo
type: git
name: Test/TemplateRepo
ref: refs/heads/master
extends:
template: pipeline-template.yml@TemplateRepo
parameters:
runPerfTests: true
答案 1 :(得分:0)
但是我不能,而且我不确定语法是否错误。得到 此错误:/templatetest.yml(行:8,列:1):意外值 '模板'
语法错误。它不支持仅在主模板中为参数使用另一个模板。因此,您不能使用以下格式:
resources:
repositories:
- repository: MSLearnDocker
type: git
name: AzureCoreApp/MSLearnDocker
ref: refs/heads/master
template: policyparams.yml@MSLearnDocker
Or:
- template: policyparams.yml@MSLearnDocker
不支持它们,它将引发预期的语法错误:Unexpected value 'template'
。
详细信息:
参数具有相应的工作范围,仅在定义它的.yml文件中有效。因此您的主模板文件将无法访问policyparams.yml
文件中的参数。
我的步骤:
Main.yml:
parameters:
- name: appFullName
type: string
default: Lance
steps:
- script: echo ${{ parameters.appFullName }}
- template: getConfig.yml
- script: echo ${{ parameters.TestIfOk }}
然后:
getConfig.yml
parameters:
- name: Test
type: string
default: TestIfOk
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Hello World"
结果: