0

我们正在开发一个项目,其中所有开发环境都使用 Vagrant 运行 Ubuntu 14.04 实例。我们的 CI 构建和部署服务器正在运行 RHEL 6.5。我们正在使用 DUO 构建 Nodejs 组件,并且在构建时,我们以编程方式从 git url 克隆依赖项。我们发现这在 Ubuntu 上一直有效,但在 RHEL 上挂起。当我们仔细观察时,我们发现以下命令有问题:

git ls-remote --tags --heads https://<username>:<authtoken>@github.com/<path-to-repo>

当它在我们的构建服务器实例上运行时,它不会返回任何数据,但在我们的 Ubuntu 上运行良好。

为了调试,我在云中使用了一个 RHEL 实例,发现我可以通过将 RHEL 随附的 1.7.x 版本的 git 升级到 1.9.4 来解决问题。但这不适用于构建实例。我看不出这两个实例的 git 配置有什么不同。由于我没有定期访问构建服务器的权限,因此我找到了一个 Centos 映像,可以在其中重现该问题。我已经剥离了它和我的 ubuntu 映像上的 git config 设置,因此它们是相同的。我看不出是什么导致了问题。

有任何想法吗?

4

1 回答 1

0

一段时间后,我们得出了我们认为的答案。当你通过 yum 安装 git 1.7 时,你会得到一个依赖,perl-Git。我们最初遇到的问题是,在 1.7 下,我们在使用 github 令牌下载 git repo 组件时收到了密码提示。这显然是 CI 上下文中的一个问题,因为没有人会在那里输入密码。

通过升级到更新版本的 git 解决了最初的问题,在我们的例子中是 1.9.4,它是我们从源代码构建的。这就是这篇文章中提到的问题出现的地方, git ls-remote 什么也没返回。当我们从旧的 1.7 安装中删除 perl-Git 时,这个问题就消失了。

我们曾希望从源代码构建 1.7 并在没有 perl-Git 的情况下安装以查看是否所有问题都消失了,但我们没时间了。所以现在,我们相信答案与那个 perl-Git 包有冲突。

于 2014-09-11T09:36:01.223 回答