Azure Pipelines: выберите ветку для git-submodule

У меня есть среда, в которой используются подмодули 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>

Есть ли какое-нибудь простое или встроенное решение для этой задачи? Я был бы признателен за раскрывающийся список параметров вместо добавления имени ветки вручную.

Я знаю, что у этого подхода есть недостатки с точки зрения воспроизводимости и отслеживаемости, но преимущества для практического тестирования довольно велики.

Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете попробовать настроить конвейер 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 }}

  . . .

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

Для получения более подробной информации вы можете обратиться к документу «Параметры среды выполнения».

Спасибо за Ваш ответ. Я больше искал вариант, при котором список ветвей создается автоматически.

amw 22.11.2022 15:33

кроме того, кажется, что мне нужно запустить git fetch перед оформлением заказа, что приводит к проблемам с учетными данными. ваш пример работал на вашем конце?

amw 22.11.2022 15:33

Привет @amw, пример в моем ответе выше просто показывает, как использовать параметр для установки нужной ветки подмодуля и использовать параметр в конвейерной задаче. Для подробных командных строк git, которые вам нужны, вам просто нужно использовать те же командные строки git, которые вы использовали на своем локальном компьютере для проверки ветки подмодуля.

Bright Ran-MSFT 23.11.2022 08:29

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

Bright Ran-MSFT 23.11.2022 08:35

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