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

78

Я получаю следующее сообщение об ошибке во время запуска шага подготовки плагина 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?

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

Ваш Ответ

8   ответов
127

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

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

м в другой ветке, чем мастер, и это тоже работает. Я думаю, что проблема заключается в том, что плагин jenkins git обычно проверяет ветку в отдельном состоянии. Итакgit symbolic-ref Команда терпит неудачу. ДобавляяCheck out to specific local branch мы исправим это. René Link
С помощью** вместоmaster будет сопоставлять имя локальной ветви с удаленной. neXus
Это работает, когда вы строите из мастер ветки. Если ваша ветвь отличается, даже после изменения ее на определенное имя, она нея работаю siddhusingh
20

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

спасибо, это сработало для меня. Мне нужно было добавить-Darguments="-Dmaven.deploy.skip=true", тоже. timbru31
СУПЕР!!!! Это сработало для меня! С этим долго боролся. Спасибо. Wander Costa
@toschneck Привет У меня возникла именно эта проблема с использованием Jenkins и Git. Не могли бы вы расширить свой ответ здесь, чтобы включить команды и конфигурацию для упомянутого вами плагина. Благодарю. Jeremy
Что является причиной для дополнительной очистки рабочего пространства? kap
В настоящее время я перешел к плагину maven-jgitflow. Он поддерживает функцию и ветвление исправления ошибок и имеет лучшую функциональность релиза, которую я когда-либо видел.bitbucket.org/atlassian/jgit-flow/wiki/Home toschneck
10

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

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

Это сработало для меня. Благодарю. mombip
4

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

м с использованием 5.3 построить 4101 - 09 декабря 13 zakmck
Какую версию Bamboo вы использовали? Я пытался это, но это не тактогда я не работаю. SkyWalker
0

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

5

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

3

.

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

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

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

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

Похожие вопросы