«Git fatal: ref HEAD - это не символьная ссылка» при использовании плагина maven release

Я получаю следующее сообщение об ошибке во время запуска шага подготовки плагина Maven, т.е.mvn release:prepare --batch-mode -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -X из плана Атласский Бамбук. Однако делать то же самое в командной строке работает нормально. Полный стек ошибок приведен ниже.

Есть идеи, как это можно решить?

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project hpcmom: 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]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project hpcmom: An error is occurred in the checkin process: Exception while executing SCM command.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: An error is occurred in the checkin process: Exception while executing SCM command.
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:281)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:232)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: org.apache.maven.shared.release.ReleaseExecutionException: An error is occurred in the checkin process: Exception while executing SCM command.
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.checkin(AbstractScmCommitPhase.java:160)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.performCheckins(AbstractScmCommitPhase.java:145)
    at org.apache.maven.shared.release.phase.ScmCommitPreparationPhase.runLogic(ScmCommitPreparationPhase.java:76)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.execute(AbstractScmCommitPhase.java:78)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:234)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:277)
    ... 22 more
Caused by: org.apache.maven.scm.ScmException: Exception while executing SCM command.
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:63)
    at org.apache.maven.scm.provider.git.AbstractGitScmProvider.executeCommand(AbstractGitScmProvider.java:291)
    at org.apache.maven.scm.provider.git.AbstractGitScmProvider.checkin(AbstractGitScmProvider.java:217)
    at org.apache.maven.scm.provider.AbstractScmProvider.checkIn(AbstractScmProvider.java:410)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.checkin(AbstractScmCommitPhase.java:156)
    ... 30 more
Caused by: org.apache.maven.scm.ScmException: Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref

    at org.apache.maven.scm.provider.git.gitexe.command.branch.GitBranchCommand.getCurrentBranch(GitBranchCommand.java:147)
    at org.apache.maven.scm.provider.git.gitexe.command.checkin.GitCheckInCommand.createPushCommandLine(GitCheckInCommand.java:192)
    at org.apache.maven.scm.provider.git.gitexe.command.checkin.GitCheckInCommand.executeCheckInCommand(GitCheckInCommand.java:132)
    at org.apache.maven.scm.command.checkin.AbstractCheckInCommand.executeCommand(AbstractCheckInCommand.java:54)
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
    ... 34 more
[ERROR] 
[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
simple  02-Dec-2013 17:18:09    Failing task since return code of [/opt/dev/apache-maven/3.0.5//bin/mvn -Djava.io.tmpdir=/opt/atlassian/bamboo/5.2.1/temp/HPCMOM-RELEASE-JOB1 release:prepare --batch-mode -DignoreSnapshots=false -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -X] was 1 while expected 0

ОБНОВИТЬ:

делаgit ls-remote . в локальной рабочей области клон производит:

[email protected]:~/code/hpcmom$ git ls-remote .
7894eea08a0afecb99515d1339623be63a7539d4    HEAD
7894eea08a0afecb99515d1339623be63a7539d4    refs/heads/master
7894eea08a0afecb99515d1339623be63a7539d4    refs/remotes/origin/HEAD
7894eea08a0afecb99515d1339623be63a7539d4    refs/remotes/origin/master
6a7095b86cccdfd4b28e4dea633d0930809ae9ac    refs/tags/v1.0
1a53462b1ecf0abfea8245016304cda9c78b420d    refs/tags/v1.0^{}
5113a7cbcf35c47b680a9c36e15e5fa01ef1d2e6    refs/tags/v1.1
79a3073ecabe65d3c8051520f8007d9e49a65a06    refs/tags/v1.1^{}
a00249209597ea1214d80ee38f228c40db7022c2    refs/tags/v1.1.0
e892bce8d25d87368ab557fee0d30810bef7e31e    refs/tags/v1.1.0^{}
b491a312c39088533cb069e4ab1ae8a00d1f6bfe    refs/tags/v1.1.2
a3f7618dada7ed60d8190426152ffd90e0e40a86    refs/tags/v1.1.2^{}

делаgit ls-remote . На Бамбуковом клоне производится:

[email protected]:/var/atlassian/application-data/bamboo/xml-data/build-dir/HPCMOM-RELEASE-JOB1$ git ls-remote .
2422ce066ac35dae3c54f1435ef8dae5008a9a14    HEAD
57c08d581c0fd9e788049733fbdc9c22b9a6ae00    refs/heads/master
57c08d581c0fd9e788049733fbdc9c22b9a6ae00    refs/remotes/origin/HEAD
57c08d581c0fd9e788049733fbdc9c22b9a6ae00    refs/remotes/origin/master
7539f9700d78a1b766fca7ed9f409914f1ea9d08    refs/tags/vnull
6bfa8c3fdb1f8f56a385035f01b1b77b6e88da8b    refs/tags/vnull^{}

и это очень странно, почему вывод локального клона разработки так сильно отличается от Bamboo?

 John Szakmeister04 дек. 2013 г., 12:48
Итак, проблема здесь в том, что проверка под Bamboo находится в "ОТДЕЛЬНАЯ ГОЛОВА " государство. Похоже, что Maven пытается проанализировать текущее имя ветви и не удается, потому что в отключенном состоянии HEAD,HEAD ref больше не ссылается на имя ветки, а на SHA1. Вы можете смоделировать это локально, запустивgit checkout SHA1 или добавление^{} на имя реф:git checkout HEAD^{}, Похоже, что плагин Bamboo Git пытается оформить ветку, если это вообще возможно. Похоже, у вас есть гонка: перед сборкой появилось новое. Это'Мне пока не ясно, как это исправить.
 Alberto26 февр. 2016 г., 14:56

Ответы на вопрос(8)

 перед звонкоммвн релиз "

maven, мы исправили ее, перейдя в раздел «Дополнительные поведения», «Отъезд в определенную локальную ветку и введите 'мастер'

Я понимаю, что это не решение, но оно может дать вам некоторое представление о том, где искать.

 neXus02 мая 2017 г., 17:07
С помощью** вместоmaster будет сопоставлять имя локальной ветви с удаленной.
 René Link07 окт. 2014 г., 13:38
м в другой ветке, чем мастер, и это тоже работает. Я думаю, что проблема заключается в том, что плагин jenkins git обычно проверяет ветку в отдельном состоянии. Итакgit symbolic-ref Команда терпит неудачу. ДобавляяCheck out to specific local branch мы исправим это.
 siddhusingh05 авг. 2014 г., 12:57
Это работает, когда вы строите из мастер ветки. Если ваша ветвь отличается, даже после изменения ее на определенное имя, она нея работаю
Решение Вопроса

чаниюUse shallow clones с описаниемFetches the shallowest commit history possible. Do not use if your build depends on full repository history, Этот флажок находится в разделе «Конфигурация плана» -> Вкладка «Хранилища» -> Git -> Расширенные настройки,

После этого все релизы работают нормально.

 mombip14 сент. 2015 г., 13:32
Это сработало для меня. Благодарю.

.

Я раньше пользоваласьcheckout scm команда.

Сейчас я использую следующий код:

checkout([
                 $class: 'GitSCM',
                 branches: scm.branches,
                 extensions: scm.extensions + [[$class: 'CleanCheckout'], [$class: 'LocalBranch', localBranch: 'new']],
                 userRemoteConfigs: scm.userRemoteConfigs
            ])

check out to specific local branch и использоватьWorkspace Cleanup Plugin очистить ваше рабочее место до начала вашей работы CI.

 timbru3108 сент. 2015 г., 22:10
спасибо, это сработало для меня. Мне нужно было добавить-Darguments="-Dmaven.deploy.skip=true", тоже.
 kap17 нояб. 2016 г., 13:59
Что является причиной для дополнительной очистки рабочего пространства?
 toschneck27 дек. 2016 г., 09:25
В настоящее время я перешел к плагину maven-jgitflow. Он поддерживает функцию и ветвление исправления ошибок и имеет лучшую функциональность релиза, которую я когда-либо видел.bitbucket.org/atlassian/jgit-flow/wiki/Home
 Jeremy23 февр. 2016 г., 10:04
@toschneck Привет У меня возникла именно эта проблема с использованием Jenkins и Git. Не могли бы вы расширить свой ответ здесь, чтобы включить команды и конфигурацию для упомянутого вами плагина. Благодарю.
 Wander Costa27 авг. 2018 г., 23:58
СУПЕР!!!! Это сработало для меня! С этим долго боролся. Спасибо.

используемой с плагином Maven Release. Я'мы исправили это, включив опцию 'Force Clean Build ' в 'Source Checkout ' задача. Бамбук говорит, что это может замедлить сборку, но это работает, и я нене наблюдалось значительного увеличения времени.

 SkyWalker13 июл. 2014 г., 12:02
Какую версию Bamboo вы использовали? Я пытался это, но это не тактогда я не работаю.
 zakmck15 июл. 2014 г., 12:47
м с использованием 5.3 построить 4101 - 09 декабря 13

указанной в файле pom. Исправлена версия maven, указанная в файле pom, в соответствии с бамбуковой версией.

Use shallow clones было недостаточно в моем случае (ям с использованием бамбука 5.7.2). Мне нужно было также включитьForce Clean Build в задаче проверки исходного кода. ВключениеUse shallow clones будет работать для следующего выполнения задания, но все последующее выполнение приведет к той же ошибке.

Ваш ответ на вопрос