部署时,我得到了:
--> Updating Composer dependencies
....
** [out :: myproj] Could not fetch https://api.github.com/repos/mmoreramerino/GearmanBundle/zipball/e0fa6c06bc5c7a5aaddaf33d5b0595ce280f7538, enter your GitHub credentials to access private repos
** [out :: myproj] The credentials will be swapped for an OAuth token stored in /website_dir/.composer/config.json, your password will not be stored
** [out :: myproj] To revoke access to this token you can visit https://github.com/settings/applications
** [out :: myproj] Username:
所有其他转发都已成功下载。在此步骤中,我无法输入我的用户名和。。我不想)
composer.json:中的依赖关系
"Mmoreramerino/GearmanBundle": "dev-development",
编辑:问题不在composer中。问题出现在部署后运行composer更新的capistrano中。
我有一台生产服务器。我可以访问它像:
$ ssh -A my_server
并且可以手动克隆此repo。因为通过这种方式,我在生产服务器中使用我的密钥。
现在我有了capistrano的部署。rb:
ssh_options[:keys] = %w(~/.ssh/id_rsa.pub)
ssh_options[:forward_agent] = true
所以部署应该在这个密钥中使用我的密钥。
但我在capistrano的步骤中,在作曲家的更新中遇到了一个错误。
编辑2:
$ ps aux | grep "ssh-agent"
dmitry 1772 0.0 0.0 73444 452 ? Ss 09:25 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "startxfce4"
dmitry 18541 0.0 0.0 109184 884 pts/0 S+ 17:25 0:00 grep --color=auto ssh-agent
使用composer的私有GitHub存储库
HTTP身份验证
或者将您的http验证凭据添加到composer.json中的存储库url中(不推荐),原因很明显。。。
"repositories": [
{
"type":"vcs",
"url": "https://username:password@github.com/username/repository"
}
SSH密钥验证
或者在github注册您的公钥,使用公钥身份验证访问您的私有存储库。使作曲家使用这个公共/私人密钥对使用:
"repositories": [
{
"type":"vcs",
"url": "github.com:username/repository.git",
"options": {
"ssh2": {
"username": "git"
"pubkey_file": "/home/composer/.ssh/id_rsa.pub",
"privkey_file": "/home/composer/.ssh/id_rsa"
}
}
}
或者(最佳解决方案),只需将公钥添加到您的~/.ssh/config
Host github
User git
Hostname github.com
IdentityFile ~/.ssh/id_rsa
我评论了的依赖性
"Mmoreramerino/GearmanBundle": "dev-development",
并将其提交给master branch。
在下一次部署之后一切都很好,但这个依赖项不包括在内。
我去服务器与密钥转发:
$ ssh -A my_server
我去了current/
目录,在composer.json中手动添加了这个依赖项,做了"composer update"。它再次询问我的证件。我输入了,一切正常。
之后我可以毫无问题地部署。。
因为在我输入凭据后创建了.composer/config.json
文件:
$ cat .composer/config.json
{
"config": {
"github-oauth": {
"github.com": "blahblahsomehash"
}
}
}
很奇怪。。
也许可以告诉composer强制使用git协议,而不是https。。