如何在 ADO CI 管道 yaml 中创建最终作业,该作业仅在测试和设备循环内的所有并行作业完成后运行?

问题描述 投票:0回答:1

假设,我有带有 UI 测试的 ADO CI 管道,并假设管道迭代一系列设备和测试,这些设备和测试可以在管道运行之间发生变化,如下所示:

- ${{ each device in parameters.devices }}:
  - job: RunUITests_${{ device.uniqueName }}
    ...nested jobs and tasks...

这些 UI 测试可以而且确实在不同代理之间并行化。其中一项作业会将错误写入临时文件。

如何添加一个最终作业,该作业仅在整个循环

- ${{ each device in parameters.devices }}:
及其嵌套作业和任务完成后才运行(这样我就可以将完整的错误文件发送到Python脚本)? 我通常可以将

dependsOn:

属性添加到最终作业中,但是

dependsOn
需要一个它所依赖的名称,而像
- ${{ each device in parameters.devices }}:
这样的循环没有静态名称,并且设备和测试列表可以改变。当然,也不能依赖循环内的作业来标记最终作业,因为无法保证哪个嵌套作业将首先完成。
    

azure-devops azure-pipelines xcode-ui-testing
1个回答
0
投票

parameters: devices: [] jobs: - job: test strategy: matrix: ${{ each device in parameters.devices }}: maxParallel: ${{length(parameters.devices)}} steps: - script: echo ${{ device.uniqueName }} - job: 'Publish' dependsOn: 'Test'

据我所知,没有其他方法,因为这里的dependsOn必须在编译时知道。

© www.soinside.com 2019 - 2024. All rights reserved.