Azure Devops - Mvn update-версия не работает как часть сборки CI - PullRequest
0 голосов
/ 14 октября 2019

Мы работаем над Azure Devops для конвейера CI в главной ветке Git. В нашем файле pom.xml есть Version, которую нужно обновить и отправить обратно в Git после успешной сборки.

Например: - <version>0.0.8-SNAPSHOT</version> в pom.xml

Когда мы бежим
mvn --batch-mode release:prepare release:update-versions -DreleaseVersion=0.0.9 -DpushChanges=true. она должна автоматически выдвигать обновленную версию в pom.xml в основной ветке Git

Приведенная выше команда отлично работает, когда мы запускаем ее с нашего локального терминала, но не работает, когда мы запускаем на azure devops со следующей ошибкой

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.2:prepare (default-cli) on project ap-fds-bua-ccc-api: An error is occurred in the checkin process: Exception while executing SCM command. Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
The process '/usr/share/maven/bin/mvn' failed with exit code 1

1 Ответ

0 голосов
/ 15 октября 2019

Azure Devops - Mvn update-версия не работает как часть сборки CI

Согласно документу MojoExecutionException , это исключение не генерируется MavenСамо ядро, но с помощью плагина.

В вашем случае кажется, что вы используете maven-release-plugin:2.5.2. Причиной проблемы, по-видимому, является то, что этот плагин проверяет ветвь в состоянии отдельного заголовка. HEAD - это указатель, который сообщает вам, в какой ветке вы находитесь. Конвейеры проверяют определенную ревизию / фиксацию при запуске, чтобы помочь протестировать каждое изменение в проекте, оставляя рабочую копию в режиме «отсоединенной головки». Maven хочет сделать дополнительные коммиты в вашем репо, чтобы записать изменения в ваш pom.xml, и поэтому он должен быть на ветке.

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

git checkout master

Тогда вы будете в курсе: master и сможете запустить maven release.

Вы можете проверить эту тему и эту тему для получения более подробной информации.

Надеюсь, это поможет.

...