devops 管道 - 使用动态参数作为作业名称

时间:2020-12-22 01:00:08

标签: azure-devops azure-pipelines

我有一些代码使用模板循环遍历一些值。 我的问题是所有作业都是随机运行的,所以我想创建一些依赖项,但是因为它们处于 for 循环中,我无法弄清楚如何命名作业步骤然后使用“dependsOn”选项。此外,如果我尝试对作业名称进行硬编码,则会出现重复的作业名称错误。

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 }} 
  

1 个答案:

答案 0 :(得分:1)

管道必须至少包含一项没有依赖关系的作业。因此,您可以尝试在第二个作业中添加依赖项。例如:

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 }}'"

根据您的配置,您的作业名称应该不同。当我使用与您相同的作业名称时,我没有收到重复的作业名称错误。这是我的结果:

enter image description here