我有一个私有存储库,在部署到 Heroku 时我试图访问它。 但是,Heroku 不允许我克隆私有存储库,并给出以下错误(如我所料):
Host key verification failed.
fatal: The remote end hung up unexpectedly
Git error: command `git clone
'[email protected]: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
我找到了这个,但不想以明文形式显示我的用户名/密码:
这对我有用:
在requirements.txt中列出私有模块如下:
git+https://your_user_name:[email protected]/your_company/your_module.git
Heroku 仅支持开箱即用的 HTTP(S) Basic 身份验证。不幸的是,这意味着您需要将凭据添加为安装 URL 的一部分,并将其作为纯文本提交到依赖项列表中。为了让您的应用支持 SSH 密钥,请执行以下操作:
id_rsa_heroku
。heroku buildpacks:add https://github.com/heroku/heroku-buildpack-ssh-key.git -i 1
heroku config:set BUILDPACK_SSH_KEY=$(cat ~/.ssh/id_rsa_heroku)
从这一刻起,Heroku 应该能够从您有权访问的任何私有存储库访问和下载代码。
您需要在 Gemfile 中使用用户名/密码,或者提供依赖项。您还可以使用 Gemfury(假设它是宝石):
看看这个 Heroku 构建包,它允许您将 GitHub 访问令牌放入环境变量中:
https://elements.heroku.com/buildpacks/heroku/heroku-buildpack-github-netrc
该页面上有关于如何使用它的完整文档。
设置完成后,Heroku 应该能够通过 HTTPS 检索您的私有存储库。