0

我已经配置了 scaleset 代理并且工作正常。但我也想尽可能利用 Microsoft 托管代理。因此,我向管道添加了一个参数,以选择用于该特定管道运行的代理池。

在此处输入图像描述

我设法根据所选参数设置池/图像变量,但由于语法不同,无法使容器作业使用所选池,如下所示。

在此处输入图像描述

有没有办法根据用户选择的参数修改 yaml 模板的架构。我认为我们不需要vmImage有条件地显示属性。我尝试了下面的代码片段,但它不起作用。vmImage财产总是丢失。

  pool:
    ${{ if ne(parameters.pool, 'Azure Pipelines') }}:
      name: ${{ parameters.pool }}
    ${{ if eq(parameters.pool, 'Azure Pipelines') }}:
      vmImage: 'ubuntu-latest'

更新:

parameters:
- name: pool
  displayName: Agent Pool
  type: string
  default: Scalesets
  values:
  - Scalesets
  - Hosted


    jobs:
    - deployment: '${{ parameters.jobName }}'
      displayName: ${{ coalesce(parameters.jobDisplayName, 'Deploy Infrastructure') }}
      ${{ if parameters.dependsOn }}:
        dependsOn: '${{ parameters.dependsOn }}'
      ${{ if parameters.condition }}:
        condition: '${{ parameters.condition }}'
      pool:
        name: ${{ parameters.pool }}
        vmImage: 'ubuntu-latest' 
      container:
         image: '${{ parameters.image }}'
         endpoint: 'Container Registry - Prd'
      environment: ${{ parameters.environment }}
    
      variables:   
        - name: 'Release-Tag'
          value: '${{ parameters.release }}'
        - name: 'Layer'
          value: '${{ parameters.environmentLayer }}'
      strategy:
       runOnce:
         deploy:
           steps:
             - script: |
                echo $(Release-Tag) $(Layer)
               displayName: 'Show release condidate'
4

1 回答 1

0

您可以将参数的数据类型设置为对象。对象类型的值可以是任何 YAML 结构。请在本文档中找到有关参数数据类型的更多详细信息。这是我的示例:

parameters:
  - name: pool
    type: object
    default:
      pool:
        vmImage: ubuntu-latest

jobs:
- job: build
  pool: ${{ parameters.pool }}
  steps:
  - script: echo Hello, world!

您还可以根据参数值选择要运行的作业:

trigger: none
parameters:
  - name: type
    type: string
    values: 
    - Scalesets
    - Hosted

jobs:
- ${{ if eq(parameters.type, 'Scalesets') }}:
  - job: Scalesets
    pool: Default
    steps:
    - script: echo Scalesets
- ${{ if eq(parameters.type, 'Hosted') }}:
  - job: Hosted
    pool: 
      vmImage: ubuntu-latest
    steps:
    - script: echo Hosted
于 2020-09-30T10:20:30.993 回答