情况:
- 我在一个私人github存储库中有一个symfony2项目
-
此项目具有供应商依赖关系,其中一个依赖关系位于不同的专用存储库中。我不拥有这个回购,但我是一个贡献者,可以读/写。使用composer以以下方式将其添加到项目中:
"repositories": [{ "type": "vcs", "url": "git@github.com:company/dependency.git" }], "require": {"company/dependency": "~1.0"}
-
我已经设置了PHPCI我的测试服务器,添加了主项目,设置了一个cron作业,所有这些都"按照手册"进行。
- 我在该服务器上生成了一个SSH密钥(在/root/.SSH中),并将该密钥添加到我的个人github帐户中
- 作为root用户,我可以手动克隆此测试服务器上的主项目存储库和依赖关系存储库
但是当在PHPCI中运行构建时,我得到以下消息:
Cloning into '/var/www/phpci/PHPCI/build/10'...
Working copy created: /
RUNNING PLUGIN: composer
Using --prefer-source flag
Loading composer repositories with package information
Failed to clone the git@github.com:company/dependency.git repository,
try running in interactive mode so that you can enter your GitHub credentials
[RuntimeException]
Failed to execute git clone --mirror 'git@github.com:company/dependency.git' '/root/.composer/cache/vcs/git-github.com-company-dependency.git/'
因此,由于身份验证问题,无法检索供应商依赖关系。但是,PHPCI正在毫无问题地克隆同样位于私人存储库中的主项目。
cronjob和composer以root身份运行,/var/www/phpci/PHPCI/build
文件夹中充满了root拥有的构建。那么,为什么它成功地克隆了项目,却没有克隆依赖项呢?
解决这个问题的最佳方法是什么?
Nevermind,就像经常发生的那样,通过写这个问题,我自己偶然找到了答案。
缩短对未来读者的搜索:
我必须执行cd /var/www/phpci/PHPCI/build/<number>
(我选择了最后一次尝试,构建10),并在其中手动运行sudo composer install
。这也失败了,但它为您提供了一个指向github页面的链接,在那里您可以生成AUTH Token
,并等待您将其粘贴回。auth令牌存储在/root/.composer中,因此您只需手动执行一次。