Как определить условие if else в пуле в конвейере Azure Devops

Я определил условие 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 отсутствует — см. определение пула

Rui Jarimba 25.04.2024 15:07

Должен ли agent: bastionvm быть спросом?

Rui Jarimba 25.04.2024 15:11

Спасибо @RuiJarimba, так как это частный бассейн, это должен был быть Требование.

Sharat Bhaskar 25.04.2024 15:32

Как упомянул @RuiJarimba, чтобы использовать разные агенты в одном пуле агентов, вам нужно использовать demands для фильтрации возможностей.

wade zhou - MSFT 26.04.2024 07:39

@SharatBhaskar мой ответ помог тебе решить твою проблему?

Rui Jarimba 24.05.2024 16:45

@RuiJarimba да, твой ответ был полезен.

Sharat Bhaskar 27.05.2024 12:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я правильно понял, вы хотите выбрать, какой агент сборки будет выполнять задание в зависимости от ветки.

Попробуйте что-то вроде этого:

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)

Другие вопросы по теме