如何使 yaml 管道依赖在前一个循环的上下文中工作?

Dan*_*les 2 azure-devops azure-pipelines

我希望能够处理数组..运行该作业多少次(与数组中的项目一样多) - 但我需要下一个作业依赖于最后一个作业。

如何将数组中最后一个元素的值放入下dependsOn:一个作业的参数中?有可能吗?如果不是,那么我如何使下一个作业取决于上一个作业最后一次运行的成功?

parameters:
- name: solutionName
  type: object
  default: ['entry1', 'entry2']

variables:
- group: 'Key Vault Test'
- name: Var1
  value: 'lol'


trigger:
- main

jobs:
- ${{each Solution in parameters.SolutionName}}:
  - job: Job_${{Solution}}
    displayName: ${{Solution}}
    pool:
      vmImage: ubuntu-latest
    steps: 
    - script: |
        echo $(Var1)
        echo ${{Solution}}
        echo ${{join(' ',parameters.SolutionName)}}

- job: Job_2
  dependsOn: HOW_DO_I_PUT_JOB_NAME_IF_I_DONT_KNOW_IT
  displayName: Job2
  pool:
    vmImage: ubuntu-latest
  steps:
  - script: |
      echo 'Second Job'
Run Code Online (Sandbox Code Playgroud)

Vin*_*ren 5

您可以使用另一个each来定义第二个作业中的依赖项列表:

jobs:
- ${{each Solution in parameters.SolutionName}}:
  - job: Job_${{Solution}}
    displayName: ${{Solution}}
    pool:
      vmImage: ubuntu-latest
    steps: 
    - script: |
        echo $(Var1)
        echo ${{Solution}}
        echo ${{join(' ',parameters.SolutionName)}}

- job: Job_2
  dependsOn:
    - ${{each Solution in parameters.SolutionName}}:
      - Job_${{Solution}}
  displayName: Job2
  pool:
    vmImage: ubuntu-latest
  steps:
  - script: |
      echo 'Second Job'
Run Code Online (Sandbox Code Playgroud)

请注意,第一个循环中的“最后一个”作业each并不是确定的。这些作业都将并行运行,因此它们中的任何一个都可能首先完成或最后完成。因此,为了让你的第二项工作等待它们全部完成,它需要对它们中的每一个都有显式的依赖。

  • 这太棒了。谢谢 (2认同)