devops管道-使用动态参数作为作业名称 [英] devops pipeline - use dynamic parameters for job name
问题描述
我有一些代码可以利用模板遍历某些值.我的问题是所有作业都是随机运行的,因此我想创建一些依赖项,但是由于它们处于for循环中,所以我无法弄清楚如何命名作业步骤,然后利用"dependsOn"功能.选项.另外,如果我尝试对工作名称进行硬编码,则会收到重复的工作名称错误.
I have some code that loop through some values utilising templates. My issue is the jobs all run randomly so I want to create some dependencies, but because they are in a for loop I have not been able to work out how I can name the job steps to then utilise the "dependsOn" option. Also if I tried to hard code a job name I get a duplicate job name error.
patch-tasks.yml
jobs:
- job: '${{ parameters.sqlserver }}_A'
displayName: '${{ parameters.sqlserver }}--set-up-stuff'
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Patchgroup '${{ parameters.patchgroup }}'"
Write-Host "sqlserver '${{ parameters.sqlserver }}'"
- job: '${{ parameters.sqlserver }}_B'
displayName: '${{ parameters.sqlserver }}--set-up-morestuff'
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Patchgroup '${{ parameters.patchgroup }}'"
Write-Host "sqlserver '${{ parameters.sqlserver }}'"
patch-template.yml
parameters:
- name: sqlservers
type: object
default: []
- name: patchgroup
type: string
default: ''
jobs:
- ${{ each sqlserver in parameters.sqlservers }}:
- template: patch-tasks.yml
parameters:
sqlserver: ${{ sqlserver }}
patchgroup: ${{ parameters.patchgroup }}
管道脚本
trigger: none
parameters:
- name: InstanceArgs
type: object
default: []
variables:
patchgroup: test
jobs:
- template: patch-template.yml
parameters:
patchgroup: $(patchgroup)
sqlservers: ${{ parameters.InstanceArgs }}
推荐答案
管道必须包含至少一个没有依赖性的作业.因此,您可以尝试在第二个作业中添加依赖项.例如:
The pipeline must contain at least one job with no dependencies. So, you can try to add dependencies in the second job. For example:
jobs:
- job: ${{ parameters.sqlserver }}_A
displayName: '${{ parameters.sqlserver }}--set-up-stuff'
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Patchgroup '${{ parameters.patchgroup }}'"
Write-Host "sqlserver '${{ parameters.sqlserver }}'"
- job: ${{ parameters.sqlserver }}_B
displayName: '${{ parameters.sqlserver }}--set-up-morestuff'
dependsOn: ${{ parameters.sqlserver }}_A
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Patchgroup '${{ parameters.patchgroup }}'"
Write-Host "sqlserver '${{ parameters.sqlserver }}'"
根据您的配置,您的工作名称应该不同.当我使用与您相同的职位名称时,没有出现重复的职位名称错误.这是我的结果:
According to your configuration, your job names should be different. When I used the same job name as yours, I did not get a duplicate job name error. Here is my result:
这篇关于devops管道-使用动态参数作为作业名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!