devops管道-使用动态参数作为作业名称 [英] devops pipeline - use dynamic parameters for job name

查看:48
本文介绍了devops管道-使用动态参数作为作业名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些代码可以利用模板遍历某些值.我的问题是所有作业都是随机运行的,因此我想创建一些依赖项,但是由于它们处于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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆