我在 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。但它选择了不同的代理。
如果我理解正确,您想根据分支选择哪个构建代理来运行作业。
尝试这样的事情:
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)