下面是我的 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
在我这边检查,我们可以得到每个作业的
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
,我们无法轻松地将值传递给下一个作业,然后将它们全部计算出来。
一种可能的方法是将值存储在外部某个地方(例如存储帐户文件),下载文件并解析每个作业中的值,在当前作业中添加当前代理编号,然后推回存储帐户文件。在管道的最后,可以获得整个代理作业号。