如何从azure管道中选择特定的构建代理以继续构建?

时间:2020-05-22 08:14:43

标签: azure deployment yaml azure-pipelines

因此,我试图想出一种方法来允许仅出于调试目的而在构建管道中轻松选择给定的代理。到目前为止,我有以下片段。两者都没有if片段缠结的情况,但是我试图根据设置的参数或设置的返回变量来做一个或另一个,以便如果它处于调试模式,它将选择并代理,如果不是,则它将使用池选择要对其运行构建的代理。到目前为止,没有运气。

variables:
  debugMode: 'false'

parameters:
- name: poolOption
  type: string
  default: 'ZupaDeploymentPool'
- name: debugMode
  type: string
  default: 'true'
- name: debugMachine
  type: string
  default: 'ZUPBUILD03'

trigger:
  batch: true
  branches:
    include:
    - master
  paths:
    exclude:
    - README.md

${{ if ne($(debugMode), 'false') }}:
  pool: ${{ parameters.poolOption }} 

${{ if ne($(debugMode), 'true') }}:
  pool:
    name: ${{ parameters.poolOption }}
    demands: 
    - Agent.Name -equals ${{ parameters.debugMachine }}

2 个答案:

答案 0 :(得分:1)

我测试了您的YAML样本并进行了一些修改。您可以尝试将“表达式”设置为一个阶段,然后检查其是否可以按预期工作。

这里是一个示例,您可以参考它。

trigger:
- master


parameters:
- name: poolOption
  type: string
  default: 'Windows-latest'

- name: debugMode
  type: string
  default: false
  values:
    - true
    - false


- name: debugMachine
  type: string
  default: 'ubuntu-16.04'

stages:
- stage: A
  jobs:
  - job: testjob
    pool:
     ${{ if eq(parameters.debugmode, 'true') }}:
      vmImage: ${{ parameters.poolOption }}

     ${{ if eq(parameters.debugmode, 'false') }}:
      vmImage: ${{ parameters.debugMachine }}


    steps:
      - script : "echo Hello, world!"

注意:我使用的是Microsoft托管的代理,因此我使用的是vmImage字段。

您可以根据需要specify specific self-hosted agentsname字段)。

希望这会有所帮助。

答案 1 :(得分:1)

因此,在与上述kevin-lu-msft进行了快速交谈之后,带我进入了此解决方案,用于处理在池中选择特定代理的情况。

User1 6
User2 8
User3 1
相关问题