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

Azure devops devops管道-对作业名称使用动态参数,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我有一些代码使用模板循环遍历一些值。 我的问题是作业都是随机运行的,所以我想创建一些依赖项,但由于它们处于for循环中,我无法确定如何命名作业步骤,然后使用“dependsOn”选项。此外,如果我试图硬编码一个作业名称,我会得到一个重复的作业名称错误 补丁任务.yml jobs: - job: '${{ parameters.sqlserver }}_A' displayName: '${{ parameters.sqlserver }}--set-up-stuff'

我有一些代码使用模板循环遍历一些值。 我的问题是作业都是随机运行的,所以我想创建一些依赖项,但由于它们处于for循环中,我无法确定如何命名作业步骤,然后使用“dependsOn”选项。此外,如果我试图硬编码一个作业名称,我会得到一个重复的作业名称错误

补丁任务.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 }}'"
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 }}
补丁模板.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 }}'"
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 }} 
  

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

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 }}'"
根据您的配置,您的作业名称应该不同。当我使用与您相同的作业名称时,我没有收到重复的作业名称错误。以下是我的结果:


嗨,朋友,这个问题有更新吗?如果您仍然被阻止,请随时通知我,我将尽力帮助:)