我不知道你们是否有人使用maven插件jgitflow。 在跑步时
clean jgitflow:release-start jgitflow:release-finish
在哈德森上,我收到以下错误:
org.apache.maven.lifecycle.LifecycleExecutionException:失败 执行目标external.atlassian.jgitflow:jgitflow-maven-plugin:1.0-m5.1:release-start 项目test-git-release上的(default-cli):目标的执行default-cli external.atlassian.jgitflow:jgitflow - Maven的插件:1.0-M5.1:释放启动 失败:字符串索引超出范围:-6
我的pom.xml如下所示:
<plugin>
<groupid>external.atlassian.jgitflow</groupid>
<artifactid>jgitflow-maven-plugin</artifactid>
<version>1.0-m5.1</version>
<configuration>
<enablesshagent>true</enablesshagent>
<defaultoriginurl>URL</defaultoriginurl>
<autoversionsubmodules>true</autoversionsubmodules>
<nodeploy>true</nodeploy>
<pushreleases>true</pushreleases>
<flowinitcontext>
<versiontagprefix>V_</versiontagprefix>
</flowinitcontext>
</configuration>
</plugin>
在我的本地计算机上,我可以成功运行此命令。
答案 0 :(得分:1)
Apparently是一个已知的错误:official bug report,对于您提到的相同版本和相同的行为(在本地工作正常,但在Jenkins / Hudson上也是如此)。
请注意,上面链接的错误报告提供了一个可能值得尝试的解决方法:
解决方法是在Jenkins: 附加行为 =&GT;结账到特定的当地分行
<强>更新强>
根据交换的意见,提出的解决方案和有效的解决方案,这里是未来帮助的历史记录:
答案 1 :(得分:0)
与GitLab合作并遇到此问题的所有人员节省了一点时间:
GitLab的Runner在DETACHED HEAD上工作,这会导致JGitFlow的GIT引用搜索失败,从而导致此错误。
解决方案与Jenkins相同:在执行JGitFlow操作之前,请先进行结帐。对于GitLab,您可以通过在gitlab-ci.yml各自管道的/ script部分中添加git checkout来实现,例如:
sample-pipeline:
stage: release
script:
-git checkout -B master
-mvn --batch-mode jgitflow:release-start jgitflow:release-finish
由于JGitFlow会自动检出developer分支并从那里进行魔术处理,因此您始终可以事先检出master,因为它根本没有效果。重要的是,当GitLab开始搜索引用时,它不是DETACHED HEAD。