如何从heroku访问私有github存储库?

问题描述 投票:0回答:4

我有一个私有存储库,在部署到 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

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

将heroku应用程序链接到私人(组织)github存储库

heroku ssh-keys
4个回答
5
投票

这对我有用:

  1. 生成Github访问令牌
  2. 在requirements.txt中列出私有模块如下:

    git+https://your_user_name:[email protected]/your_company/your_module.git
    

4
投票

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

  1. 创建一个新的 SSH 密钥,Heroku 将使用它来访问 GitHub 存储库。选择一个独特的名称,例如
    id_rsa_heroku
  2. 将密钥的公共部分添加到您的 GitHub 帐户(链接到设置)。
  3. 使用 heroku-buildpack-ssh-key
    heroku 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 应该能够从您有权访问的任何私有存储库访问和下载代码。


2
投票

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


0
投票

看看这个 Heroku 构建包,它允许您将 GitHub 访问令牌放入环境变量中:

https://elements.heroku.com/buildpacks/heroku/heroku-buildpack-github-netrc

该页面上有关于如何使用它的完整文档。

设置完成后,Heroku 应该能够通过 HTTPS 检索您的私有存储库。

© www.soinside.com 2019 - 2024. All rights reserved.