如何从heroku访问私有github仓库?

时间:2013-04-01 23:28:19

标签: heroku ssh-keys

我有一个私人仓库,我在部署到Heroku时尝试访问。但是,Heroku不允许我克隆私人仓库,并给我以下错误(正如我所料):

Host key verification failed.
       fatal: The remote end hung up unexpectedly
       Git error: command `git clone
       'git@github.com:pr/lm-models.git'
       "/tmp/build_3r0z0znww0zda/vendor/bundle/ruby/1.9.1/cache/bundler/git/lm-models-aab025aaadbe07202b16e1db7505ae1726f8723a"
       --bare --no-hardlinks` in directory /tmp/build_3r0z0znww0zda has failed.
 !
 !     Failed to install gems via Bundler.
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

我找到了这个,但不想以明文显示我的用户名/密码:

Linking heroku app to a private(organization) github repo

3 个答案:

答案 0 :(得分:4)

这对我有用:

  1. 生成Github Access Token
  2. 在requirements.txt列出私有模块如下:

    git+https://your_user_name:your_git_token@github.com/your_company/your_module.git
    

答案 1 :(得分:2)

您需要在Gemfile中使用用户名/密码,或者提供依赖项。你也可以使用Gemfury(假设它是宝石):

答案 2 :(得分:1)

Heroku仅支持开箱即用的Git HTTP(S)基本身份验证。不幸的是,这意味着您需要将凭据添加为安装URL的一部分,并将其作为纯文本提交到依赖项列表中。为使您的应用程序支持SSH密钥,请执行以下操作:

  1. Create a new SSH key,Heroku将使用它来访问GitHub存储库。选择一个不同的名称,例如id_rsa_heroku
  2. 将密钥的公开部分添加到您的GitHub帐户(link to settings)。
  3. 使用heroku-buildpack-ssh-keyheroku buildpacks:add https://github.com/heroku/heroku-buildpack-ssh-key.git -i 1
  4. 将密钥的私有部分设置为您的Heroku应用程序的环境变量:heroku config:set BUILDPACK_SSH_KEY=$(cat ~/.ssh/id_rsa_heroku)

从这一刻开始,Heroku应该能够从您有权访问的任何私有存储库中访问和下载代码。