Я пытаюсь реализовать лазурный devops в проекте scala, который встроен в инструмент maven.
Я должен использовать управление выпуском в проекте, поэтому я использую соединение ниже scm и maven-release. плагин, как показано ниже в файле pom.xml.
...
...
<groupId>com.group.id</groupId>
<artifactId>engineering-parsers</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
....
....
....
<scm>
<connection>scm:git:[email protected]:data-layer/engineering-parser.git</connection>
<developerConnection>scm:git:[email protected]:data-layer/engineering-parser.git</developerConnection>
<url>https://git.org.com/data-layer/engineering-parser</url>
<tag>v1.0.0</tag>
</scm>
...
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
...
Я добавил задачу maven в конвейер сборки azure, как показано ниже, и предоставил команду release:prepare и попробовал с --batch-mode release:clean release:prepare -Dtag=2.0.0 -DreleaseVersion=2.0.0 -DdevelopmentVersion=2.0 .1-SNAPSHOT -Dusername=Personal%20Access%20Token -Dpassword=xxxxxGIT PATxxxxx
При запуске конвейера сборки сборка maven завершается сбоем, выдавая следующую ошибку.
Похоже, что с помощью предоставленных команд я не могу подключиться к репозиторию git и отправить изменения в репо.
Есть ли что-нибудь еще, что я должен добавить при использовании плагина выпуска maven с devops?
Любые выводы приветствуются!
Вам нужно добавить параметр -B
к вызову Maven, чтобы избежать интерактивного режима.
А также мне нужно указать -Dtag=v1.0.0 release:prepare -DreleaseVersion=1.0.0 -DdevelopmentVersion=2.0.0-SNAPSHOT
В соответствии со значением в pom.xml, а не в жестком кодировании. Есть ли способ?
Если у вас есть дополнительные вопросы, задавайте новые вопросы на Stackoverflow.
[ОШИБКА] Не удалось выполнить команду git-commit. ....
Похоже, вы не передали информацию для аутентификации.
Вы можете попробовать добавить project.scm.id
в свой файл pom.xml.
<properties>
<project.scm.id>my-scm-server</project.scm.id>
</properties>
Затем вы можете добавить файл Settings.xml для прохождения авторизации.
<settings>
<servers>
<server>
<id>my-scm-server</id>
<username>myUser</username>
<password>myPassword</password>
</server>
</servers>
</settings>
Вот документ, можете на него сослаться.
ИЛИ вы можете попытаться передать информацию об аутентификации в команде (не рекомендуется).
release:prepare -Dusername=[username] -Dpassword=[password]
Вы можете обратиться к этому билету для получения дополнительной информации.
В соответствии со значением в pom.xml, а не с жестким кодированием. Есть ли в любом случае?
Чтобы достичь этой цели, вам нужно использовать сценарий powershell, чтобы получить значение соответствующей позиции и установить его в качестве переменной конвейера.
Например:
$filePath = "filepath/pom.xml"
[xml]$pomXml = Get-Content $filePath
$version = $pomXml.project.version
Write-Host "##vso[task.setvariable variable=version]$version"
В этом случае вы можете получить значение параметра, соответствующее расположению json-файла.
Затем вы можете использовать переменные (например, $(version)
) для замены жесткого кодирования.
Обновлять:
Вы можете попробовать добавить дополнительную задачу командной строки перед задачей maven для запуска команды git config.
git config --global user.email "[email protected]"
git config --global user.name "PAT"
Я попытался передать имя пользователя и пароль, с connectionUrl и без него. -B --batch-mode -Dtag=v1.0.0 release:prepare -DreleaseVersion=1.0.0 -DdevelopmentVersion=2.0.0-SNAPSHOT -DconnectionUrl=scm:svn:https://git.org.com/data-layer/engineering-parser -Dusername=antony -Dpassword=antony
Но все равно я получаю ту же ошибку. [ERROR] The git-commit command failed. [ERROR] Command output: [ERROR] *** Please tell me who you are. [ERROR] Run [ERROR] git config --global user.email "[email protected]" [ERROR] git config --global user.name "Your Name"
@Энтони. Из URL-адреса scm git и developerConnection кажется, что вы используете аутентификацию по ключу ssh. Можете ли вы попробовать изменить URL-адрес HTTPS? Например: <connection>scm:git:https://git.org.com/data-layer/engineering-parser</connection>
Пытался указать параметр подключения https, но получил ту же ошибку
Если я попытаюсь использовать тот же параметр соединения https в IntelliJ IDE, сборка пройдет успешно, и подготовка к выпуску будет завершена, если я выполню приведенные ниже команды. --batch-mode release:clean release:prepare -Dtag=1.0.0 -DreleaseVersion=1.0.0 -DdevelopmentVersion=2.0.0-SNAPSHOT -Dusername=Personal%20Access%20Token -Dpassword=[PAT]
И теги scm в pom.xml, как показано ниже. <scm> <!--<connection>scm:git:[email protected]/data-layer/engineering-parser.git</connection>--> <developerConnection>scm:git:https://git.org.com/data-layer/engineering-parser.git</developerConnection> <tag>1.0.0</tag> </scm>
Пробовал ту же команду в задаче maven конвейера сборки Azure, но в итоге получил только ту же ошибку.
Привет @Antony. Спасибо за Вашу информацию. На вашем локальном компьютере процесс может использовать локально кэшированные учетные данные, поэтому он может работать. В azure devops вы можете запустить команду git, чтобы установить учетные данные перед задачей maven. Пожалуйста, проверьте мое обновление. Основываясь на моем тесте, это может сработать.
Большое вам спасибо... Добавлена задача командной строки, которая будет выполнять приведенный ниже сценарий, и она отлично работает. git config --global user.email "[email protected]" git config --global user.name "PAT" git checkout -f devops-test
Я добавил
--batch-mode -Dtag=v1.0.0 release:prepare -DreleaseVersion=1.0.0 -DdevelopmentVersion=2.0.0-SNAPSHOT
, и это удалось до тех пор, пока git не зафиксирует и не с ошибкой ниже.[ERROR] The git-commit command failed. [ERROR] Command output: [ERROR] [ERROR] *** Please tell me who you are. [ERROR] [ERROR] Run [ERROR] [ERROR] git config --global user.email "[email protected]" [ERROR] git config --global user.name "Your Name"