如何获取 YAML azure 管道中使用的代理数量

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

下面是我的 YAML 代码,我的主 YAML 文件中有一个名为 $(count) 的变量。我想确定我的管道所需的代理数量。

我们的管道仅包含基于代理的作业(带或不带strategy.parallel)。

我接受所有阶段作为参数,允许我解析所有作业并获取所需代理的数量。

我可以在注释代码中写什么来解决这个问题?

我想获得代理计数=(基于代理的作业中提供的Strategy.parallel值总数)+(如果未提供Strategy.parallel则将其视为1)

parameters:

- name: stages
  type: stageList
  default: []

stages:

- ${{ each stage in parameters.stages }}:
  - ${{ each job in stage.jobs }}:
    - ${{ if ne(job.pool.name, 'server') }}:
      - ${{ if ne(job.strategy.parallel, '') }}:
              # Add value of ${{ strategy.parallel }} to variable $(count)
      - ${{ else }}:
              # increment $(count) by 1
azure-devops tfs yaml azure-pipelines azure-pipelines-yaml
1个回答
0
投票

在我这边检查,我们可以得到每个作业的

job.strategy.parallel
值:

主要yaml:

trigger: none

stages:
- template: template.yml  # Template reference
  parameters:
    stages:
    - stage: Build
      jobs:
      - job: BuildJob
        steps:
        - script: echo Building!
    - stage: Test
      jobs:
      - job: TestOnWindows
        steps:
        - script: echo Testing on Windows!
      - job: TestOnLinux
        strategy:
          parallel: 4
        steps:
        - script: echo Testing on Linux!
    - stage: Deploy
      jobs:
      - job: Deploy
        steps:
        - script: echo Deploying the code!

Template.yml内容:

parameters:
- name: stages  # List of stages
  type: stageList


stages: 
- ${{ each stage in parameters.stages }}:
  - stage: ${{ stage.stage }}
    jobs:
    - ${{ each job in stage.jobs }}:
      - job: ${{ job.job }}
        steps: 
        - script: 'echo ${{ job.strategy.parallel }}'

但是,由于管道中可能存在不同的

stages/jobs
,我们无法轻松地将值传递给下一个作业,然后将它们全部计算出来。

一种可能的方法是将值存储在外部某个地方(例如存储帐户文件),下载文件并解析每个作业中的值,在当前作业中添加当前代理编号,然后推回存储帐户文件。在管道的最后,可以获得整个代理作业号。

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