我们正在开发一个项目,其中所有开发环境都使用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的OTB的1.7.x版git升级到1.9.4来解决问题。但是这对构建实例不起作用。我看不出这两个实例的git配置有什么不同。由于我无法定期访问构建服务器,因此我找到了Centos映像,我可以在其中重现问题。我已经删除了那个和我的ubuntu图像上的git配置设置,所以它们是相同的。我看不出是什么导致了这个问题。
有什么想法吗?
答案 0 :(得分: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包有冲突。