web-dev-qa-db-ja.com

「Git致命的:ref HEADはシンボリックrefではありません」Mavenリリースプラグインを使用中

Mavenリリースプラグインの準備手順、つまりAtlassian Bambooプランの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 .を実行すると、以下が生成されます。

azg@Olympus:~/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^{}

Bambooクローンでgit ls-remote .を実行すると、以下が生成されます。

azg@Olympus:/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の出力と非常に異なるのですか?

86
SkyWalker

Atlassian Bambooの問題は、デフォルト設定Use shallow clonesの説明Fetches the shallowest commit history possible. Do not use if your build depends on full repository historyをオフにすることで解決しました。このチェックボックスは、[プランの構成]-> [リポジトリ]タブ-> Git->詳細オプションにあります。

この後、すべてのリリースが正常に機能します。

11
SkyWalker

Jenkinsでmavenリリースプラグインと組み合わせて同じエラーが発生しました。追加の動作に移動して修正し、特定のローカルブランチにチェックアウトして「master」と入力します。

これは解決策ではないことは承知していますが、どこに目を向ければよいのかを示すかもしれません。

134
jvwilge

JenkinsとGITの場合は、追加の動作check out to specific local branchを追加し、Workspace Cleanup Pluginを使用して、CIジョブの先頭までワークスペースをクリーンアップします。

25
toschneck

私の場合、Use shallow clonesのチェックを外すだけでは不十分でした(私はBamboo 5.7.2を使用しています)。ソースコードチェックアウトタスクでForce Clean Buildも有効にする必要がありました。 Use shallow clonesを有効にすると、ジョブの次の実行で機能しますが、それ以降のすべての実行では同じエラーが発生します。

5
Jean Marois

Maven Releaseプラグインで使用されるBambooでこの問題を確認しました。 「ソースチェックアウト」タスクの「強制クリーンビルド」オプションを有効にすることで修正しました。 Bambooは、これによりビルドが遅くなる可能性があると言いますが、動作し、大幅な時間の増加は見られませんでした。

4
zakmck

私のために働いたのは、「mvn release」を呼び出す前に「git checkout -f master」を呼び出すことでした

3
Vincent F

Jenkins Team ProjectとMultibranch Project Setupを使用しています。

以前にcheckout scmコマンドを使用しました。

今、私は次のコードを使用しています:

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

私たちにとって、問題はpomファイルで指定されたmavenバージョンにありました。竹のバージョンに従ってpomファイルで指定されたMavenバージョンを修正し、問題を修正しました

0
Manu