Выпуск maven: подготовка в конвейере сборки Azure

Я пытаюсь реализовать лазурный 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?

Любые выводы приветствуются!

Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
2
0
3 988
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно добавить параметр -B к вызову Maven, чтобы избежать интерактивного режима.

Я добавил --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"

Antony 11.12.2020 12:28

А также мне нужно указать -Dtag=v1.0.0 release:prepare -DreleaseVersion=1.0.0 -DdevelopmentVersion=2.0.0-SNAPSHOT В соответствии со значением в pom.xml, а не в жестком кодировании. Есть ли способ?

Antony 11.12.2020 12:28

Если у вас есть дополнительные вопросы, задавайте новые вопросы на Stackoverflow.

J Fabian Meier 11.12.2020 14:16
Ответ принят как подходящий

[ОШИБКА] Не удалось выполнить команду 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/engin‌​eering-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"

Antony 15.12.2020 06:54

@Энтони. Из URL-адреса scm git и developerConnection кажется, что вы используете аутентификацию по ключу ssh. Можете ли вы попробовать изменить URL-адрес HTTPS? Например: <connection>scm:git:https://git.org.com/data-layer/engineeri‌​ng-parser</connectio‌​n>

Kevin Lu-MSFT 15.12.2020 08:32

Пытался указать параметр подключения https, но получил ту же ошибку

Antony 15.12.2020 11:10

Если я попытаюсь использовать тот же параметр соединения 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]

Antony 15.12.2020 13:24

И теги scm в pom.xml, как показано ниже. <scm> <!--<connection>scm:git:[email protected]/data-layer/engineeri‌​ng-parser.git</conne‌​ction>--> <developerConnection>scm:git:https://git.org.com/data-layer/‌​engineering-parser.g‌​it</developerConnect‌​ion> <tag>1.0.0</tag> </scm>

Antony 15.12.2020 13:27

Пробовал ту же команду в задаче maven конвейера сборки Azure, но в итоге получил только ту же ошибку.

Antony 15.12.2020 13:28

Привет @Antony. Спасибо за Вашу информацию. На вашем локальном компьютере процесс может использовать локально кэшированные учетные данные, поэтому он может работать. В azure devops вы можете запустить команду git, чтобы установить учетные данные перед задачей maven. Пожалуйста, проверьте мое обновление. Основываясь на моем тесте, это может сработать.

Kevin Lu-MSFT 16.12.2020 10:16

Большое вам спасибо... Добавлена ​​задача командной строки, которая будет выполнять приведенный ниже сценарий, и она отлично работает. git config --global user.email "[email protected]" git config --global user.name "PAT" git checkout -f devops-test

Antony 16.12.2020 11:33

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