Capistrano-前进键,使作曲家正常工作


Capistrano - Forward key to work composer properly

部署时,我得到了:

--> 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。。