【问题标题】:Jenkins pipeline fails to clone Bitbucket repoJenkins 管道无法克隆 Bitbucket 存储库
【发布时间】:2020-01-14 08:26:39
【问题描述】:

我在 Jenkins 中通过 HTTP 克隆存储库时遇到问题。只有超过 12 个分支或总共有 18 个分支和标签的存储库才会出现此问题。

运行以下命令: git clone http://USERNAME:PASSWORD@bitbucket.company.org/scm/key/repo.git

当有 11 个分支或总共 17 个分支和标签时,克隆工作非常好。当它高于该数字时,克隆将失败并出现以下错误:

error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 
fatal: The remote end hung up unexpectedly

Bitbucket 在日志级别 DEBUG 下运行,我在日志中找不到更多信息。

服务器上的版本:

Bitbucket 服务器 5.14.0 Git 2.19.0

本地版本:

Git 2.17.1

PS:我没有在代理后面运行 Bitbucket。

我检查了 atlassian-bitbucket.log,它确实显示了与存储库克隆相关的错误:

    The following was written to stderr:
    fatal: the remote end hung up unexpectedly
    com.atlassian.utils.process.ProcessException: Non-zero exit code: 1
    at com.atlassian.bitbucket.scm.SummarizingProcessHandler.complete(SummarizingProcessHandler.java:47)
    ...

我尝试设置 postBuffer: git config --global http.postBuffer 524288000

我尝试使用用户名和密码作为输入进行克隆,但在超过 12 个分支上仍然失败: git clone http://bitbucket.company.org/scm/key/repo.git

存储库的大小无关紧要,因为我可以克隆具有较少分支的大型存储库。

如果我使用 SSH,它确实有效,但这不是我用例的选项。由于我们每个版本都有一个发布分支,并且标签的数量确实会随着时间的推移而增加,我预计这对其他人来说也是一个问题。

当我尝试在 Jenkins 管道中进行克隆时,我尝试了以下配置来获得不仅仅是浅层克隆的更多内容。

checkout([
  $class: 'GitSCM',
  branches: scm.branches,
  extensions: [
    [
      $class: 'CloneOption',
      honorRefspec: false,
      noTags: false,
      shallow: false,
    ]
  ],
  userRemoteConfigs: scm.userRemoteConfigs,
])

我希望它能够克隆存储库,无论分支数量如何。有谁知道为什么会这样?任何帮助都会被极大地接受。

【问题讨论】:

  • 不幸的是,我已经尝试过了。在使用 ssh 克隆并重新配置遥控器以使用基本身份验证后,我还尝试推送到仓库,这可行,但 pull/fetch/clone 没有。
  • 听起来像是服务器端问题。尝试在服务器端查找相关消息。
  • 嗯,我发现的所有错误信息都与我在问题中提出的相同。但是我想知道它是否与它在 HTTP 而不是 HTTPS 上有关?毕竟这是基本的身份验证。

标签: jenkins bitbucket bitbucket-server


【解决方案1】:

您是否尝试过使用凭据步骤中的常规 git 步骤?

【讨论】:

  • 是的,我什至尝试在我自己的机器上本地执行此操作。发生同样的错误,所以我实际上猜测这不是 Jenkins 管道的问题,而是 Bitbucket 的问题。
  • 听起来是这样的。
猜你喜欢
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 2016-05-01
  • 2016-02-05
  • 2017-03-25
  • 2013-01-16
相关资源
最近更新 更多