如何使 yaml 管道 dependson 在上一个循环的上下文中工作?
How do I make a yaml pipeline dependson work in the context of a previous loop?
我希望能够通过数组工作.. 运行 作业无论多少次(与数组中的项目一样多)- 但我需要下一个作业取决于上一个作业.
如何将数组中最后一个元素的值放入下一个作业的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'
${{parameters.SolutionName}}
是object
类型,关键字dependsOn
不接受(它接受string
),要指定作业名称,需要使用下面格式取决于之前的作业。
- job: Job_2
dependsOn:
- Job_${{parameters.SolutionName[0]}} # it points to the 1st job
- Job_${{parameters.SolutionName[1]}} # it points to the 2nd job
displayName: Job2
pool:
vmImage: ubuntu-latest
steps:
- script: |
echo 'Second Job'
或者你可以把Job_2
放到一个新的阶段。
stages:
- stage: stage1
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)}}
- stage: stage2
dependsOn: stage1 # depends on stage instead.
jobs:
- job: Job_2
displayName: Job2
pool:
vmImage: ubuntu-latest
steps:
- script: |
echo 'Second Job'
您可以使用另一个 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'
请注意,第一个 each
循环中的 'last' 作业不是确定的;这些作业都将 运行 并行进行,因此它们中的任何一个都可能首先或最后完成。所以为了让你的第二份工作等待它们全部完成,它需要对它们中的每一个都有明确的依赖。
我希望能够通过数组工作.. 运行 作业无论多少次(与数组中的项目一样多)- 但我需要下一个作业取决于上一个作业.
如何将数组中最后一个元素的值放入下一个作业的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'
${{parameters.SolutionName}}
是object
类型,关键字dependsOn
不接受(它接受string
),要指定作业名称,需要使用下面格式取决于之前的作业。
- job: Job_2
dependsOn:
- Job_${{parameters.SolutionName[0]}} # it points to the 1st job
- Job_${{parameters.SolutionName[1]}} # it points to the 2nd job
displayName: Job2
pool:
vmImage: ubuntu-latest
steps:
- script: |
echo 'Second Job'
或者你可以把Job_2
放到一个新的阶段。
stages:
- stage: stage1
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)}}
- stage: stage2
dependsOn: stage1 # depends on stage instead.
jobs:
- job: Job_2
displayName: Job2
pool:
vmImage: ubuntu-latest
steps:
- script: |
echo 'Second Job'
您可以使用另一个 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'
请注意,第一个 each
循环中的 'last' 作业不是确定的;这些作业都将 运行 并行进行,因此它们中的任何一个都可能首先或最后完成。所以为了让你的第二份工作等待它们全部完成,它需要对它们中的每一个都有明确的依赖。