本文介绍了基于目录数的动态作业的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在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'

因此您将得到以下信息:

请注意,如果要使用阶段,则可能需要不同的语法才能到达输出变量。

这篇关于基于目录数的动态作业的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-12 19:10