Azure管道stageList参数扩展模板

时间:2020-05-30 08:45:32

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

我正在尝试通过下面显示的蔚蓝管道传递舞台列表

np.einsum

扩展下面显示的模板

# File: azure-pipelines.yml
trigger:
- master

extends:
  template: start_stage.yml
  parameters:
    cdstages:  
    - stage: secure_buildstage
      pool: Hosted VS2017
      jobs:
      - job: secure_buildjob
        steps:
        - bash: echo This happens before code 
          displayName: 'Base: Pre-build'
        - bash: echo Building
          displayName: 'Base: Build'

        - bash: echo This happens after code
          displayName: 'Base: Signing'

    - stage: secure_deploystage
      pool: Hosted VS2017
      jobs:
      - job: secure_deployjob
        steps:
        - bash: echo This happens before code 
          displayName: 'Base: Pre-build'
        - bash: echo Building
          displayName: 'Base: Build'

        - script: echo This happens after code
          displayName: 'Base: Signing'

目标是列出阶段并验证用户是否仅在执行公司合规团队批准的步骤。

我遇到错误 [enter image description here] [1

不确定为什么会出现“任务”错误,没有在任何地方使用任务关键字。 有帮助吗?

1 个答案:

答案 0 :(得分:1)

根据我的测试,看来start_stage.yml中的舞台列表不支持添加each指令以获取更深的内容(例如工作和步骤)。

使用舞台列表时,它可以获取舞台并将其用于比较。

例如:

parameters:
- name: cdstages # the name of the parameter is buildSteps
  type: stageList # data type is StepList
  default: [] # default value of buildSteps

stages:
- ${{ each stage in parameters.cdstages }}:
  - ${{ each pair in stage }}:
      ${{ if ne(pair.value, 'abc') }}:
        ${{ pair.key }}: ${{ pair.value }}       
      ${{ if eq(pair.value, 'abc') }}: 
        '${{ pair.value }}': error

此Yaml模板可以工作。

但是当我在舞台后面添加each指令以获取工作时。作业不可用。

parameters:
- name: cdstages 
  type: stageList 
  default: [] 

stages:
- ${{ each stage in parameters.cdstages }}:
  - ${{ each job in stage.jobs }}:
    - ${{ each pair in job }}:
        ${{ if ne(pair.value, 'abc') }}:
          ${{ pair.key }}: ${{ pair.value }}       
        ${{ if eq(pair.value, 'abc') }}: 
          '${{ pair.value }}': error

job issue

根据您的要求,您需要执行构建步骤并将其用于比较。

您可以尝试直接使用steplist类型。

下面是有关steplist的示例,您可以参考它。

希望这会有所帮助。