Конвейер Azure DevOps — как помечать источники при использовании нескольких репозиториев с исходным кодом Git

#azure-devops #azure-pipelines

#azure-devops #azure-конвейеры

Вопрос:

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

Комментарии:

1. Где вы храните свой код в репозиториях Azure, Github? Правильно ли я вас понял, что вы используете много репозиториев в своем многоступенчатом конвейере?

Ответ №1:

Как мне заставить конвейер обновлять каждый исходный коммит одним и тем же тегом?

Вы можете использовать команды git для создания одинаковых меток и добавления их во все репозитории.

Вот сценарий:

 - task: CmdLine@2
  inputs:
    script: |
      git tag -a {tag} -m "{tag description}"
      git push origin --tags
  

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

Если вы просматриваете более одного репозитория на этапе, переключитесь на соответствующий каталог, прежде чем добавлять тег:

 - task: CmdLine@2
  inputs:
    script: |
      cd {repository A}
      git tag -a {tag} -m "{tag description}"
      git push origin --tags
      cd ..
      cd {repository B}
      git tag -a {tag} -m "{tag description}"
      git push origin --tags
      ...
  

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

Ответ №2:

Цитируя ответ Брэди Уайта от https://developercommunity.visualstudio.com/t/missing-gui-option-create-git-tag-after-successful/1007477 :

  1. Отредактируйте свой конвейер.
  2. В меню «…» справа от кнопки запуска выберите Триггеры.
  3. Выберите вкладку YAML.
  4. Выберите «Получить источники»
  5. Оттуда вы устанавливаете для «Tag sources» значение «Никогда», «При успешном выполнении» или «Всегда».

Ответ №3:

При использовании этого подхода теги будут удалены при удалении сборки. Поэтому, если вы не сохраните свои сборки, тег исчезнет.