3

我不知道你们中是否有人使用 maven 插件 jgitflow。跑步时

clean jgitflow:release-start jgitflow:release-finish

在哈德逊,我收到以下错误:

org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目 test-git-release 上执行目标 external.atlassian.jgitflow:jgitflow-maven-plugin:1.0-m5.1:release-start (default-cli):执行默认-cli 的目标 external.atlassian.jgitflow:jgitflow-maven-plugin:1.0-m5.1:release-start 失败:字符串索引超出范围:-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>

在我的本地机器上,我能够成功运行此命令。

4

2 回答 2

1

显然是一个已知的错误:官方错误报告,对于您提到的相同版本和相同的行为(在本地工作正常但在 Jenkins/Hudson 上相同的异常)。

请注意,上面链接的错误报告提供了一个可能值得尝试的解决方法:

解决方法在 Jenkins 中: Additional Behaviors => checkout to specific local branch


更新
根据交流的意见,提出的解决方案和有效的解决方案,这里是未来帮助的历史日志:

  • 按照上面建议的解决方法并将本地分支设置为从 origin/develop 签出,遇到以下错误:
    error occurred during unpacking on the remote end: unpack-objects abnormal exit
  • 这种错误实际上是由于相关文件夹的权限,正如其他 SO 线程在这里这里所建议的那样。但是,之后更改权限并没有帮助。
  • 通过在服务器本身上创建 .git 存储库最终解决了这个问题。这样做会赋予文件夹组与所有者相同的权限。
于 2016-01-19T13:20:27.100 回答
0

为所有使用 GitLab 并遇到此问题的人节省一点时间:

GitLab 的 Runner 在 DETACHED HEAD 上工作,这会导致 JGitFlow 搜索 GIT refs 失败,从而导致此错误。

解决方案与 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 会自动检出开发分支并从那里发挥作用,因此您始终可以事先检出 master,因为它根本没有任何作用;当 GitLab 开始搜索 refs 时,它不是一个 DETACHED HEAD,这很重要。

于 2018-10-31T13:07:55.877 回答