0

部署时我得到:

--> 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 update 的 capistrano。

我有一个生产服务器。我可以像这样访问它:

$ ssh -A my_server

并且可以手动克隆这个 repo。因为这样我在生产服务器中使用了我的密钥。

现在我在 capistrano 的 deploy.rb 中:

ssh_options[:keys] =            %w(~/.ssh/id_rsa.pub)
ssh_options[:forward_agent] =   true

所以部署应该在这个key中使用我的key。

但是在 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
4

2 回答 2

3

通过 composer 使用私有 GitHub 存储库

HTTP 身份验证

出于显而易见的原因,或者将您的 http auth 凭据添加到 composer.json 中的存储库 url(不推荐)...

"repositories": [
{
    "type":"vcs", 
    "url": "https://username:password@github.com/username/repository"
}

SSH 密钥认证

...或在 github 上注册您的公钥,以使用 pubkey 身份验证访问您的私有存储库。让作曲家使用这个公钥/私钥对:

"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
于 2013-06-25T12:42:13.423 回答
0

我注释掉了依赖

"Mmoreramerino/GearmanBundle": "dev-development",

并将其提交给 master 分支。

下次部署后一切正常,但不包括此依赖项。

我通过密钥转发转到服务器:

$ ssh -A my_server

我去了current/目录,在composer.json中手动添加了这个依赖,做了'composer update'。它再次询问我的凭据。我进去了,一切正常。

之后我可以毫无困难地部署..

因为在我输入凭据后创建了.composer/config.json文件:

$ cat .composer/config.json 
{
    "config": {
        "github-oauth": {
            "github.com": "blahblahsomehash"
        }
    }
}

很奇怪..

也许可以告诉作曲家强制使用 git 协议,而不是 https ..

于 2013-06-25T15:33:02.347 回答