微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

运行时在Azure Devops中的托管代理和Scaleset代理之间切换

如何解决运行时在Azure Devops中的托管代理和Scaleset代理之间切换

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

enter image description here

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

enter image description here

是否有一种方法可以基于用户选择的参数来修改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'

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。