Короткая версия
Может кто-нибудь сказать мне, как настроить задачу «Сценарий командной строки» в конвейере сборки DevOps Azure, который вносит изменения в локальный репозиторий Git (фактически, в репозиторий Git, на котором основан конвейер)?
Независимо от того, что я пытаюсь, мой сценарий всегда истекает после печати Pushing commits to git
.
Более длинная версия
Мы переносим существующие проекты Java / Maven с сервера сборки Jenkins на среду сборки Azure DevOps, и я пытаюсь настроить конвейер сборки, который имитирует функциональность Jenkins «Release Staging».
Моей первой попыткой было вызвать плагин релиза Maven непосредственно из проверенных источников. Это включало несколько препятствий, большинство из которых мне удалось преодолеть тем или иным способом:
- В стандартной git-среде Azure DevOps не заданы обязательные значения конфигурации "user.email" и "user.name"; это можно решить, вызвав
git config
в отдельной задаче «Сценарий командной строки» перед нажатием.
- Azure DevOps проверяет источники в «отключенном состоянии HEAD» - для решения этой проблемы задачи сценария установки также вызывают
git checkout master
.
Как только это настроено, мой скрипт вызова Maven запускается до того момента, когда плагин релиза пытается перейти в Git; соответствующие строки в файле журнала читаются
[INFO] Executing: cmd.exe /X /C "git push https://xxx.visualstudio.com/YYY/_git/zzz refs/heads/master:refs/heads/master"
[INFO] Working directory: D:\a\1\s</code>
После этого ничего не происходит (по крайней мере, ничего не регистрируется), пока не истечет время ожидания:
##[error]The operation was canceled.
##[section]Finishing: Maven pom.xml
Чтобы выяснить причину этой проблемы, я попробовал несколько вещей, в том числе
- отключение вызова maven и вызов
git push
непосредственно из скрипта,
- регистрация помощника по учетным данным Git типа store (при условии, что проблема связана с аутентификацией),
но безуспешно. Теперь у меня заканчиваются идеи, как я мог бы заставить git push
звонить на работу - кто-нибудь здесь, кто может мне помочь?
P.S .: Как вы можете сказать, я довольно новичок в том, что касается DevOps Azure, поэтому я точно не знаю всех хитростей и возможностей этой системы. В частности, я не знаю, есть ли что-то такое же, что и плагин релиза Maven. Мы используем управление пакетами Azure DevOps, но мы хотим сохранить отдельные каналы для моментальных снимков и сборок выпусков (как это делают инструменты, подобные Nexus), поэтому у нас должен быть механизм для автоматического продвижения номеров выпусков, извлечения и возврата и создание и публикация упакованного модуля в выпуске новостей.
Если кто-то может предложить альтернативный способ достижения этого, я также открыт для предложений.