“Git fatal:ref HEAD不是一个符号参考”,而使用Maven发布插件
mvn release:prepare --batch-mode -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -X
从Atlassian的竹子中得到下面的错误输出计划。 但是,在命令行中执行相同的工作正常。 完整的错误堆栈如下。
任何想法如何解决?
[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^{}
做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^{}
这很奇怪,为什么当地的发展克隆产量与竹子产量有如此不同呢?
我在Jenkins和Maven发布插件中遇到了同样的错误,我们通过转到其他行为来解决它,检查到特定的本地分支,并input“主”
我意识到这不是一个解决scheme,但它可能会给你一些方向在哪里看。
对于Jenkins和GIT,将额外的行为check out to specific local branch
添加check out to specific local branch
并使用Workspace Cleanup Plugin
将Workspace Cleanup Plugin
到CI作业的开始处。
Atlassian Bamboo中的问题是通过取消检查默认设置来解决的。 Use shallow clones
带描述的Use shallow clones
Fetches the shallowest commit history possible. Do not use if your build depends on full repository history
Fetches the shallowest commit history possible. Do not use if your build depends on full repository history
。 该checkbox位于“计划configuration” – >“存储库”选项卡 – >“Git” – >“高级”选项下
之后,所有的发布工作正常。
取消选中Use shallow clones
是不够的(我正在使用Bamboo 5.7.2)。 我还需要在源代码签出任务中启用Force Clean Build
。 启用Use shallow clones
将可用于下一次执行作业,但所有后续执行都会导致相同的错误。
在Maven Release插件中使用的Bamboo下,我看到了这个问题。 我已通过在“源代码签出”任务中启用“强制清理生成”选项来解决此问题。 竹子说这可能会使build设更慢,但它的工作原理,我没有看到任何显着的时间增加。
我正在使用多分支项目安装程序的Jenkins团队项目。
我以前用checkout scm
命令。
现在我使用下面的代码:
checkout([ $class: 'GitSCM', branches: scm.branches, extensions: scm.extensions + [[$class: 'CleanCheckout'], [$class: 'LocalBranch', localBranch: 'new']], userRemoteConfigs: scm.userRemoteConfigs ])