本文介绍了基于目录数的动态作业的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以在Azure DevOps管道中创建动态作业?
我有一个场景,其中我有多个用于部署的目录,目录的数量将是动态的(例如:它可以有一个用于部署的应用程序,也可以有多个)。我要做的是创建动态数量的作业,其中它应该为每个目录运行cd app && cf push
。
deployments/
├── app1
│ ├── app.jar
│ └── manifest.yml
├── app2
│ ├── app.jar
│ └── manifest.yml
└── app3
| ├── app.jar
| └── manifest.yml
推荐答案
您可以尝试使用矩阵配置来处理此问题:
您需要做的是构建表示文件夹结构的变量,然后将其作为配置传递:
jobs:
- job: JobA
steps:
- pwsh: |
$json="{'job1': {'Work': 'work1'}, 'job2': {'Work': 'work2'}}"
Write-Host "##vso[task.setvariable variable=targets;isOutput=true]$json"
name: setTargets
- script: echo $(setTargets.targets)
name: echovar
- job: buildSrc
dependsOn: JobA
displayName: Build source
strategy:
matrix: $[ dependencies.JobA.outputs['setTargets.targets'] ]
variables:
targets: $[ dependencies.JobA.outputs['setTargets.targets'] ]
steps:
- pwsh: Write-Host "${{ convertToJson(variables) }}"
displayName: 'Print all variables via expression'
因此您将得到以下信息:
请注意,如果要使用阶段,则可能需要不同的语法才能到达输出变量。
这篇关于基于目录数的动态作业的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!