假设,我有带有 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 }}:
这样的循环没有静态名称,并且设备和测试列表可以改变。当然,也不能依赖循环内的作业来标记最终作业,因为无法保证哪个嵌套作业将首先完成。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必须在编译时知道。