Я определил условие if else в шаблоне сборки Devops Azure, как показано ниже. Однако в моем пуле есть три машины, и на этапе сборки кажется, что третья машина выбирается не из этих двух.
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
Я дважды проверил, что запускаю ветку разработки, поэтому он должен подключить агент ветки разработки, то есть bastionvm. Но он подбирает другого агента.
Должен ли agent: bastionvm быть спросом?
Спасибо @RuiJarimba, так как это частный бассейн, это должен был быть Требование.
Как упомянул @RuiJarimba, чтобы использовать разные агенты в одном пуле агентов, вам нужно использовать demands для фильтрации возможностей.
@SharatBhaskar мой ответ помог тебе решить твою проблему?
@RuiJarimba да, твой ответ был полезен.





Если я правильно понял, вы хотите выбрать, какой агент сборки будет выполнять задание в зависимости от ветки.
Попробуйте что-то вроде этого:
variables:
- ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/features/dev') }}:
- 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)
Синтаксис недействителен, свойство
agentотсутствует — см. определение пула