【问题标题】:Maven jgitflow pluginMaven jgitflow 插件
【发布时间】:2016-04-24 23:27:18
【问题描述】:

我不知道你们中是否有人使用 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-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>

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

【问题讨论】:

    标签: maven jenkins hudson jgitflow-maven-plugin


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      Apparently 是一个已知错误:official bug report,适用于您提到的相同版本和相同行为(在本地工作正常,但在 Jenkins/Hudson 上存在相同异常)。

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

      解决方法在 Jenkins 中: 其他行为 => 结帐到特定的本地分支


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

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

      【讨论】:

      • 将本地分支设置为“origin/develop”结帐后,出现以下错误:error occurred during unpacking on the remote end: unpack-objects abnormal exit
      • @edmond 听起来像是目录权限配置,你能检查一下吗?
      • 设置权限后,我现在将“短读块”作为错误。
      • 嗨@A。迪马特奥。权限配置应该如何?谢谢
      • 嗨@A。迪马特奥。问题实际上是权限。我在本地机器上创建了 git 项目,并使用 scp 将其复制到服务器上。即使事后更改权限也无济于事。为了解决这个问题,我在服务器本身上创建了 .git 存储库。这样做会赋予文件夹组与所有者相同的权限。
      猜你喜欢
      • 1970-01-01
      • 2022-12-03
      • 2016-07-11
      • 2016-09-28
      • 2016-10-23
      • 2016-05-13
      • 1970-01-01
      • 2016-01-03
      • 2018-04-27
      相关资源
      最近更新 更多