【问题标题】:Dynamic jobs based on the number of directories基于目录数量的动态作业
【发布时间】:2021-09-25 16:26:53
【问题描述】:

是否可以在 Azure DevOps 管道中创建动态作业?

我有一个场景,其中我有多个用于部署的目录,目录的数量将是动态的(例如:它可以有 1 个应用程序进行部署,也可以有很多)。我想要做的是创建一个动态数量的作业,其中它应该为每个目录运行cd app && cf push


deployments/

├── app1

│   ├── app.jar

│   └── manifest.yml

├── app2

│   ├── app.jar

│   └── manifest.yml

└── app3

|   ├── app.jar

|   └── manifest.yml

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-yaml


    【解决方案1】:

    您可以尝试使用矩阵配置来处理:

    您要做的是构建代表您的文件夹结构的变量,然后将其作为配置传递:

    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'
    

    所以你会得到这个:

    请注意,如果您想使用阶段,那么您可能需要不同的语法来访问输出变量。

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多