Как заставить ручную сборку Azure Pipeline выбрать нужную мне ветку git

Мой конвейер Azure использует 3 репозитория, которые мы указываем в разделе resources. Но когда я вручную выполняю сборку конвейера с веб-сайта Azure, кажется, что ветка, выбранная мной в веб-интерфейсе, игнорируется. Он всегда создает «главную» ветку всех трех репозиториев. Я хочу, чтобы хотя бы один из них выбрал указанную мной ветку

Переменная сборки BUILD_SOURCEBRANCHNAME правильно установлена ​​Azure для выбранной мной ветки. Но он игнорируется при извлечении кода. Как я могу выбрать нужную ветку?

Вот мой раздел ресурсов

resources:
  repositories:
    - repository: Main
      type: git
      name: Software/Main
    - repository: SdkThirdParty
      type: git
      name: Software/SdkThirdParty
    - repository: SdkTestData
      type: git
      name: Software/SdkTestData

Я знаю, что могу заставить его выбирать ветку, если жестко закодирую ее в этих директивах repository со строкой «ref». Итак, если бы я хотел ветку «моя тестовая ветка», я мог бы сделать это

- repository: Main
  type: git
  name: Software/Main
  ref: 'refs/heads/my-test-branch'

Но мне нужно жестко запрограммировать это. Я не могу использовать переменные сборки в разделе ресурсов. Их там не поддерживают

Итак, как я могу по-разному выбирать, какую ветку вытягивать?

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

Ответы 2

Согласно Выражения шаблона в определении ресурса репозитория, выражения шаблона поддерживаются при определении свойства ref ресурса repository в конвейере YAML.

Пример – использование предопределенной переменной:

resources:
  repositories:
    - repository: Main
      type: git
      name: Software/Main
      ref: ${{ variables['Build.SourceBranch'] }}

Примечание:

  • Build.SourceBranch и Build.SourceBranchName доступны в шаблонах, как указано в предопределенных переменных .

Пример — использование параметра конвейера:

parameters:
  - name: branch
    type: string
    default: refs/heads/my-test-branch
    values:
      - refs/heads/my-dev-branch
      - refs/heads/my-test-branch
      - refs/heads/my-other-branch

resources:
  repositories:
    - repository: Main
      type: git
      name: Software/Main
      ref: ${{ parameters.branch }}

Когда вы ставите конвейер в очередь, вы можете выбрать ветвь в разделе «ресурсы» на экране очереди. Вам не нужно использовать параметры.

Daniel Mann 10.07.2024 02:57

@DanielMann Я вообще-то не знал об этом, спасибо.

Rui Jarimba 10.07.2024 10:47

Однако использование параметров можно использовать для ограничения используемых ветвей.

Rui Jarimba 10.07.2024 11:09
Ответ принят как подходящий

как я могу по-разному выбирать, какую ветку вытягивать?

Использование параметра конвейера, как предложено в ответе Руи, — это способ решить проблему, если выбранные ветки остаются постоянными.

Однако если имена ветвей часто меняются, этот метод требует, чтобы вы постоянно поддерживали значение параметра конвейера в вашем yaml.

В этом случае вы можете выбрать ветку каждого ресурса репо, нажав кнопку «Запустить конвейер», как упомянул Дэниел. Таким образом, вам не нужно будет поддерживать значение параметра конвейера.

Скриншот:

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

Rui Jarimba 10.07.2024 11:11

Я тоже этого не знал. На самом деле я даже не заметил раздел «Ресурсы» в диалоговом окне «Запуск конвейера». Спасибо

Joe 10.07.2024 15:49

Однако одна вещь в вашем ответе меня смущает. Вы говорите, что согласно подходу Руи, изменение значения потребует от меня редактирования YAML. Но ответ Руи выбирает ветку на основе переменной сборки, что, как я думал, было невозможно. Итак, если это возможно, то даже при его подходе, пока я выбираю другое значение для этой переменной сборки, я должен иметь возможность переключать ветки по своему желанию, не редактируя YAML, не так ли?

Joe 10.07.2024 15:51

Привет @Joe, в ответе Руи рассказал о двух способах: первый способ — использовать предопределенную переменную Build.SourceBranch. Таким образом, ветка ресурсов репозитория будет такой же, как саморепозиторий, в котором находится ваш YAML, и вы сможете переключать ветки без редактирования YAML.

Miao Tian-MSFT 11.07.2024 03:25

Второй — использовать параметр конвейера. При таком подходе вам необходимо сохранять значение параметра конвейера в вашем YAML, когда вы создаете больше ветвей в ресурсах репозитория. Например, если вы сегодня создали ветку с именем test20240711, вам необходимо добавить ее в список значений параметров конвейера в вашем YAML. Затем вы можете выбрать его в значении параметра.

Miao Tian-MSFT 11.07.2024 03:25

Привет @Joe, рад слышать, что ответ помог! Приятного кодирования!

Miao Tian-MSFT 22.07.2024 02:56

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