在模板中扩展作业的dependsOn

时间:2020-10-13 14:37:30

标签: azure-devops azure-pipelines

我正在创建一个模板,以便在其中传递工作清单。在此模板中,我将“预”作业添加到作业列表中,然后添加所有作业。我希望能够对作业列表中的所有作业添加对“ pre”作业的依赖性,而又不会破坏joblist参数中的作业之间的任何依赖性。我的模板如下所示:

parameters:
  - name: Jobs
    type: jobList

jobs:
- job: prejob
  steps:
  - powershell: |
      Write-Host "This is my prejob"
- ${{ each job in parameters.Jobs }}:
  - ${{ each pair in job }}:
      ${{ if and(ne(pair.key, 'steps'),ne(pair.key, 'dependsOn')) }}:
        ${{ pair.key }}: ${{ pair.value }}
    dependsOn: 'prejob'
    steps:
    - ${{ job.steps }}

现在这当然会覆盖传递的作业的dependsOn。

我可以在模板中进行哪些更改,以便可以将传递的作业依赖项与prejob作业一起加入? join表达式连接了2个数组,但是我的prejob文本不是数组,并且我不确定作业的dependsOn属性始终是数组。

1 个答案:

答案 0 :(得分:1)

请尝试以下操作:

parameters:
  - name: Jobs
    type: jobList

jobs:
- job: prejob
  steps:
  - powershell: |
      Write-Host "This is my prejob"
- ${{ each job in parameters.Jobs }}:
  - ${{ each pair in job }}:
      ${{ if and(ne(pair.key, 'steps'),ne(pair.key, 'dependsOn')) }}:
        ${{ pair.key }}: ${{ pair.value }}
    dependsOn:
    - 'prejob'
    - ${{ if job.dependsOn }}:
      - ${{ job.dependsOn }}
    steps:
    - ${{ job.steps }}

通过这种方式,您应该能够对prejob建立依赖性,并保持作业的依赖性。