Мой конвейер 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'
Но мне нужно жестко запрограммировать это. Я не могу использовать переменные сборки в разделе ресурсов. Их там не поддерживают
Итак, как я могу по-разному выбирать, какую ветку вытягивать?
Согласно Выражения шаблона в определении ресурса репозитория, выражения шаблона поддерживаются при определении свойства 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 }}
@DanielMann Я вообще-то не знал об этом, спасибо.
Однако использование параметров можно использовать для ограничения используемых ветвей.
как я могу по-разному выбирать, какую ветку вытягивать?
Использование параметра конвейера, как предложено в ответе Руи, — это способ решить проблему, если выбранные ветки остаются постоянными.
Однако если имена ветвей часто меняются, этот метод требует, чтобы вы постоянно поддерживали значение параметра конвейера в вашем yaml.
В этом случае вы можете выбрать ветку каждого ресурса репо, нажав кнопку «Запустить конвейер», как упомянул Дэниел. Таким образом, вам не нужно будет поддерживать значение параметра конвейера.
Скриншот:
Это должен быть принятый ответ. На самом деле я не знал, что можно выбрать ветку для каждого ресурса репозитория при постановке в очередь новой сборки.
Я тоже этого не знал. На самом деле я даже не заметил раздел «Ресурсы» в диалоговом окне «Запуск конвейера». Спасибо
Однако одна вещь в вашем ответе меня смущает. Вы говорите, что согласно подходу Руи, изменение значения потребует от меня редактирования YAML. Но ответ Руи выбирает ветку на основе переменной сборки, что, как я думал, было невозможно. Итак, если это возможно, то даже при его подходе, пока я выбираю другое значение для этой переменной сборки, я должен иметь возможность переключать ветки по своему желанию, не редактируя YAML, не так ли?
Привет @Joe, в ответе Руи рассказал о двух способах: первый способ — использовать предопределенную переменную Build.SourceBranch
. Таким образом, ветка ресурсов репозитория будет такой же, как саморепозиторий, в котором находится ваш YAML, и вы сможете переключать ветки без редактирования YAML.
Второй — использовать параметр конвейера. При таком подходе вам необходимо сохранять значение параметра конвейера в вашем YAML, когда вы создаете больше ветвей в ресурсах репозитория. Например, если вы сегодня создали ветку с именем test20240711
, вам необходимо добавить ее в список значений параметров конвейера в вашем YAML. Затем вы можете выбрать его в значении параметра.
Привет @Joe, рад слышать, что ответ помог! Приятного кодирования!
Когда вы ставите конвейер в очередь, вы можете выбрать ветвь в разделе «ресурсы» на экране очереди. Вам не нужно использовать параметры.