Azure devops 是否可以将包含作业列表的模板传递给作业列表类型参数?
目前在Azure管道中,我们可以将要执行的作业列表传递给子模板,其参数为Azure devops 是否可以将包含作业列表的模板传递给作业列表类型参数?,azure-devops,azure-pipelines,azure-pipelines-yaml,Azure Devops,Azure Pipelines,Azure Pipelines Yaml,目前在Azure管道中,我们可以将要执行的作业列表传递给子模板,其参数为jobListtype,如doco中所示 是否有一种方法可以将pipeline.yml中的这些作业封装到另一个作业模板中的作业列表参数,并将该模板传递到作业列表参数。我尝试按照以下方式构建我的管道: pipeline.yml deployment-template.yml post-deploy-tests-dev.yml post-deploy-smoke-tests-prod.yml 我希望根据环境的不同,在部署模板
jobList
type,如doco中所示
是否有一种方法可以将pipeline.yml中的这些作业封装到另一个作业模板中的作业列表
参数,并将该模板传递到作业列表
参数。我尝试按照以下方式构建我的管道:
pipeline.yml
deployment-template.yml
post-deploy-tests-dev.yml
post-deploy-smoke-tests-prod.yml
我希望根据环境的不同,在部署模板的末尾动态插入不同测试的作业。我尝试了deployment template.yml
中的jobList
类型参数,如下所示,但它抛出了一个错误,即映射不应为
#post-deploy-tests-dev.yml
jobs:
- job: Test1
steps:
- script: execute test1
#post-deploy-tests-smoke-tests-prod.yml
jobs:
- job: Test2
steps:
- script: execute test2
#pipeline.yml
...
- template: deployment-template.yml
parameters:
environment: dev
testsJobsList:
template: post-deploy-tests-dev.yml
- template: deployment-template.yml
parameters:
environment: prod
testsJobsList:
template: post-deploy-smoke-tests-prod.yml
#deployment-template.yml
parameters:
- name: testsJobsList
type: jobList
default: []
#All deployment jobs here
jobs:
...
...
#Tests as the end
- ${{ parameters.testsJobsList }}
是否有一种方法可以动态传递作业列表
它抛出一个错误,表示映射不是预期的
使用YAML示例进行测试,此问题的原因是:在pipeline.yml文件(-template:post-deploy-tests-dev.yml
和-template:post-deploy-smoke-tests-prod.yml
)中的模板字段前面缺少-
。在此位置,模板相当于一个作业,您需要添加-
这是我的样本:
pipeline.yml
trigger:
- none
pool:
vmImage: 'windows-latest'
jobs:
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-tests-dev.yml
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-smoke-tests-prod.yml
parameters:
- name: 'testsJobsList'
type: jobList
default: []
jobs:
- ${{ each job in parameters.testsJobsList }}: # Each job
- ${{ each pair in job }}: # Insert all properties other than "steps"
${{ if ne(pair.key, 'steps') }}:
${{ pair.key }}: ${{ pair.value }}
steps: # Wrap the steps
- ${{ job.steps }} # Users steps
jobs:
- job: Test1
steps:
- script: echo test1
部署模板.yml
trigger:
- none
pool:
vmImage: 'windows-latest'
jobs:
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-tests-dev.yml
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-smoke-tests-prod.yml
parameters:
- name: 'testsJobsList'
type: jobList
default: []
jobs:
- ${{ each job in parameters.testsJobsList }}: # Each job
- ${{ each pair in job }}: # Insert all properties other than "steps"
${{ if ne(pair.key, 'steps') }}:
${{ pair.key }}: ${{ pair.value }}
steps: # Wrap the steps
- ${{ job.steps }} # Users steps
jobs:
- job: Test1
steps:
- script: echo test1
部署后测试-dev.yml
trigger:
- none
pool:
vmImage: 'windows-latest'
jobs:
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-tests-dev.yml
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-smoke-tests-prod.yml
parameters:
- name: 'testsJobsList'
type: jobList
default: []
jobs:
- ${{ each job in parameters.testsJobsList }}: # Each job
- ${{ each pair in job }}: # Insert all properties other than "steps"
${{ if ne(pair.key, 'steps') }}:
${{ pair.key }}: ${{ pair.value }}
steps: # Wrap the steps
- ${{ job.steps }} # Users steps
jobs:
- job: Test1
steps:
- script: echo test1
部署后烟雾测试-prod.yml
jobs:
- job: Test2
steps:
- script: echo test2
结果:
它抛出一个错误,表示映射不是预期的
使用YAML示例进行测试,此问题的原因是:在pipeline.yml文件(-template:post-deploy-tests-dev.yml
和-template:post-deploy-smoke-tests-prod.yml
)中的模板字段前面缺少-
。在此位置,模板相当于一个作业,您需要添加-
这是我的样本:
pipeline.yml
trigger:
- none
pool:
vmImage: 'windows-latest'
jobs:
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-tests-dev.yml
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-smoke-tests-prod.yml
parameters:
- name: 'testsJobsList'
type: jobList
default: []
jobs:
- ${{ each job in parameters.testsJobsList }}: # Each job
- ${{ each pair in job }}: # Insert all properties other than "steps"
${{ if ne(pair.key, 'steps') }}:
${{ pair.key }}: ${{ pair.value }}
steps: # Wrap the steps
- ${{ job.steps }} # Users steps
jobs:
- job: Test1
steps:
- script: echo test1
部署模板.yml
trigger:
- none
pool:
vmImage: 'windows-latest'
jobs:
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-tests-dev.yml
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-smoke-tests-prod.yml
parameters:
- name: 'testsJobsList'
type: jobList
default: []
jobs:
- ${{ each job in parameters.testsJobsList }}: # Each job
- ${{ each pair in job }}: # Insert all properties other than "steps"
${{ if ne(pair.key, 'steps') }}:
${{ pair.key }}: ${{ pair.value }}
steps: # Wrap the steps
- ${{ job.steps }} # Users steps
jobs:
- job: Test1
steps:
- script: echo test1
部署后测试-dev.yml
trigger:
- none
pool:
vmImage: 'windows-latest'
jobs:
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-tests-dev.yml
- template: deployment-template.yml
parameters:
testsJobsList:
- template: post-deploy-smoke-tests-prod.yml
parameters:
- name: 'testsJobsList'
type: jobList
default: []
jobs:
- ${{ each job in parameters.testsJobsList }}: # Each job
- ${{ each pair in job }}: # Insert all properties other than "steps"
${{ if ne(pair.key, 'steps') }}:
${{ pair.key }}: ${{ pair.value }}
steps: # Wrap the steps
- ${{ job.steps }} # Users steps
jobs:
- job: Test1
steps:
- script: echo test1
部署后烟雾测试-prod.yml
jobs:
- job: Test2
steps:
- script: echo test2
结果:
谢谢Kevin Lu MSFT。我使用了模板
作为作业
而不是作业
。将模板
引用更改为-template
修复了格式错误。感谢Kevin Lu MSFT。我使用了模板
作为作业
而不是作业
。将模板
引用更改为-template
修复了格式错误。