У меня есть среда, в которой используются подмодули git.
При внесении изменений в базовый репозиторий подмодулей я всегда должен создавать ветку на верхнем уровне, вносить изменения в ссылку на подмодуль и отправлять ее на сервер. Затем я готов запустить конвейер с необходимой фиксацией подмодуля.
Чтобы сделать это проще, я хотел бы иметь возможность выбрать ветку или фиксацию подмодуля при запуске сборки на верхнем уровне.
В jenkins я использовал необязательный параметр, созданный https://plugins.jenkins.io/git-parameter/, чтобы выбрать ветку подмодуля.
К сожалению, я не нашел ничего подобного для Azure Pipelines. В списке типов данных параметров я нашел только type: string
, что довольно упрощенно по сравнению с тем, что у меня было в jenkins.
Логика будет:
IF parameter for submodule branch is set
THEN
$ cd submodule_path
$ git checkout --detach <optional branch>
Есть ли какое-нибудь простое или встроенное решение для этой задачи? Я был бы признателен за раскрывающийся список параметров вместо добавления имени ветки вручную.
Я знаю, что у этого подхода есть недостатки с точки зрения воспроизводимости и отслеживаемости, но преимущества для практического тестирования довольно велики.
Вы можете попробовать настроить конвейер YAML, как показано ниже:
parameters:
- name: 'Select submodule branch'
type: string
default: branch01
values:
- branch01
- branch02
- branch03
jobs:
- job: build
displayName: 'Build'
pool:
vmImage: windows-latest
steps:
. . .
- task: Bash@3
displayName: 'Select submodule branch'
inputs:
targetType: inline
script: |
cd submodule_path
git checkout --detach ${{ parameters.SubmoduleBranch }}
. . .
Затем при ручном запуске конвейера вы можете увидеть окно, как показано ниже, и выбрать одну из перечисленных ветвей в окне.
Для получения более подробной информации вы можете обратиться к документу «Параметры среды выполнения».
кроме того, кажется, что мне нужно запустить git fetch
перед оформлением заказа, что приводит к проблемам с учетными данными. ваш пример работал на вашем конце?
Привет @amw, пример в моем ответе выше просто показывает, как использовать параметр для установки нужной ветки подмодуля и использовать параметр в конвейерной задаче. Для подробных командных строк git, которые вам нужны, вам просто нужно использовать те же командные строки git, которые вы использовали на своем локальном компьютере для проверки ветки подмодуля.
Кроме того, насколько я знаю, невозможно динамически и автоматически извлекать ветки подмодуля и устанавливать их в список значений параметра. Когда вы добавляете новую ветку в репозиторий подмодулей, вам необходимо вручную обновить список значений параметра в YAML.
Спасибо за Ваш ответ. Я больше искал вариант, при котором список ветвей создается автоматически.