Нажмите на локальный Git DevOps Azure из Build Pipeline - PullRequest
0 голосов
/ 17 сентября 2018

Короткая версия

Может кто-нибудь сказать мне, как настроить задачу «Сценарий командной строки» в конвейере сборки DevOps Azure, который вносит изменения в локальный репозиторий Git (фактически, в репозиторий Git, на котором основан конвейер)?

Независимо от того, что я пытаюсь, мой сценарий всегда истекает после печати Pushing commits to git.

Более длинная версия

Мы переносим существующие проекты Java / Maven с сервера сборки Jenkins на среду сборки Azure DevOps, и я пытаюсь настроить конвейер сборки, который имитирует функциональность Jenkins «Release Staging».

Моей первой попыткой было вызвать плагин релиза Maven непосредственно из проверенных источников. Это включало несколько препятствий, большинство из которых мне удалось преодолеть тем или иным способом:

  1. В стандартной git-среде Azure DevOps не заданы обязательные значения конфигурации "user.email" и "user.name"; это можно решить, вызвав git config в отдельной задаче «Сценарий командной строки» перед нажатием.
  2. 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), поэтому у нас должен быть механизм для автоматического продвижения номеров выпусков, извлечения и возврата и создание и публикация упакованного модуля в выпуске новостей.

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

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Вам не нужно идти по пути PAT для аутентификации - согласно this , если ваше хранилище является частью того же проекта DevOps Azure, что и конвейер сборки, учетные данные должны просто передаваться. Возможно ли, что вы не разрешили агенту сборки писать в свои репозитории? Нужны две вещи:

  • В разделе Параметры проекта -> Репозитории для вашего проекта DevOps Azure разрешите Служба построения коллекции проектов сущность Участник права на соответствующее хранилище ( или все репозитории проекта).

  • Разрешить сценариям доступ к токену OAuth в настройках «Задание агента»:

    enter image description here

Также обратите внимание на ошибку: это не сработает для операций подмодуля, поскольку DevOps не передает автоматически учетные данные в экземпляры подмодуля, и единственным симптомом является зависание без вывода сообщений. Обходной путь для обработки учетных данных вручную можно найти здесь .

0 голосов
/ 18 сентября 2018

Чтобы отправить изменения в DevOps Azure, необходимо интегрировать свои учетные данные в URL-адрес Git-репо :

  • Сначала создайте PAT , если у вас нет.
  • Затем нажмите следующую команду, чтобы нажать:

    git push https://Personal%20Access%20Token:PAT@xxx.visualstudio.com/YYY/_git/zzz master
    
...