如何在天蓝色管道中使用模板参数
how can use template for parameters in azure pipelines
我正在使用一个扩展模板,并且我想在此使用另一个模板作为参数。
但我不能,我不确定语法是否错误。
收到此错误:
/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
扩展模板中如何获取参数模板文件?
This 是您要查找的内容,这些文档解释了从模板扩展时如何使用参数。
简而言之就是在模板yaml文件中定义所有步骤,并从扩展yaml文件传递参数值。请记住,您还可以将构建步骤作为参数传递,请参阅 here 示例。
根据您的情况,请参阅下面的一些片段。
pipeline-template.yml 在名为 TemplateRepo
的存储库中
parameters:
- name: runPerfTests
type: boolean
default: false
steps:
- script: echo Current parameter value ${{ parameters.runPerfTests }}.
azure-pipelines.yml 在名为 ExtendRepo
的存储库中
# 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
But i'm not able to and i'm not sure if the syntax is wrong. getting
this error : /templatetest.yml (Line: 8, Col: 1): Unexpected value
'template'
语法错误。它不支持在主模板中仅针对参数使用另一个模板。所以你不能使用像这样的格式:
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"
结果:
我正在使用一个扩展模板,并且我想在此使用另一个模板作为参数。 但我不能,我不确定语法是否错误。 收到此错误: /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
扩展模板中如何获取参数模板文件?
This 是您要查找的内容,这些文档解释了从模板扩展时如何使用参数。
简而言之就是在模板yaml文件中定义所有步骤,并从扩展yaml文件传递参数值。请记住,您还可以将构建步骤作为参数传递,请参阅 here 示例。
根据您的情况,请参阅下面的一些片段。
pipeline-template.yml 在名为 TemplateRepo
的存储库中parameters:
- name: runPerfTests
type: boolean
default: false
steps:
- script: echo Current parameter value ${{ parameters.runPerfTests }}.
azure-pipelines.yml 在名为 ExtendRepo
的存储库中# 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
But i'm not able to and i'm not sure if the syntax is wrong. getting this error : /templatetest.yml (Line: 8, Col: 1): Unexpected value 'template'
语法错误。它不支持在主模板中仅针对参数使用另一个模板。所以你不能使用像这样的格式:
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"
结果: