如何在azure devops pipeline中定义池下的if else条件

问题描述 投票:0回答:1

我在 Azure DevOps 构建模板中定义了 if else 条件,如下所示。然而,在我的池中,我有三台机器,在我的构建阶段,似乎第三台机器不是从这两台机器中挑选的。

stages:

- stage: "BuildStage"
  displayName: "Build Stage"
  jobs:
    - job: "BuildJob"
      displayName: "BuildJob"
      pool:
       ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/dev') }}:
          name: deployment
          agent: bastionvm
       ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/acc') }}:
          name: deployment
          agent: accvm

我已经检查过两次我正在运行 dev 分支,因此它应该获取 dev 分支代理,即 bastionvm。但它选择了不同的代理。

azure-devops azure-pipelines
1个回答
0
投票

如果我理解正确,您想根据分支选择哪个构建代理来运行作业。

尝试这样的事情:

variables:
  - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/features/main') }}:
      - name: buildAgent
        value: bastionvm
  - ${{ else }}:
      - name: buildAgent
        value: accvm

stages:
 - stage: "BuildStage"
    displayName: "Build Stage"
    jobs:
      - job: "BuildJob"
        displayName: "BuildJob"
        pool:
          name: deployment
          demands:
            - Agent.Name -equals $(buildAgent)
        steps:
          - script: echo "Hello from the $(Agent.Name) build agent!"
  • 我正在使用预定义的
    $(Agent.Name)
    ,它填充有构建代理名称。

如果这不起作用,请尝试以下操作(假设您有一个带有构建代理名称的

name
功能集):

demands:
  - name -equals $(buildAgent)
© www.soinside.com 2019 - 2024. All rights reserved.