在 gemfile 中使用私有 git 存储库部署 heroku 应用程序
Deploy heroku app with private git repo in gemfile
我制作了一个 rails 应用程序,并想将其部署到 Heroku。但是,git push heroku master
失败了,因为它没有权限访问 gem 文件中引用的 gem(因为存储库是私有的)。此行产生错误。
gem 'auth', branch: 'master', git: 'git@bitbucket.org:myteam/auth.git'
首先我查看了 here,因此我尝试生成 new 组 public 和私钥,然后 t运行sferring他们用 heroku keys:add
结束了,但它不接受私钥。
我也试过this模拟ssh和运行heroku run bash
,然后试过运行ssh-keygen
,但是里面的文件是临时的并在我尝试 运行 服务器时消失了。
最简单的方法是将 username
和 password
放入 URL,如在基本 HTTP 身份验证中一样,例如
gem 'my_gem', :git => 'https://my_username:my_password@github.com/my_github_account/my_repo.git', :ref => 'revision_no'
如果你不想把password
放到Gemfile
,那么你可以把它放到environment variable
.
在 Heroku 上,您可以使用以下命令添加环境变量:
heroku config:add ENV_VAR=VALUE
然后在 Gemfile
中使用此环境变量,如下所示:
gem 'my_gem',
:git => "https://#{ENV['var_private_gem_username']}:#{ENV['var_private_gem_password']}@github.com/my_github_account.git",
:ref => 'rev'
为了避免在开发过程中必须使用 HTTPS,您还可以尝试拆分开发和生产模式,如下所示:
group :development do
gem 'auth', branch: 'master', git: 'git@bitbucket.org:myteam/auth.git'
end
group production do
gem 'my_gem',
:git => "https://#{ENV['var_private_gem_username']}:#{ENV['var_private_gem_password']}@github.com/my_github_account.git",
:ref => 'rev'
end
注意:这两种方法都不是 100% 安全的。但是,第二个选项(存储在 heroku 的环境变量中)比第一个选项(将它们存储在纯文本中)更安全。但是,没有其他选择可以做这样的事情(AFAIK)。
我制作了一个 rails 应用程序,并想将其部署到 Heroku。但是,git push heroku master
失败了,因为它没有权限访问 gem 文件中引用的 gem(因为存储库是私有的)。此行产生错误。
gem 'auth', branch: 'master', git: 'git@bitbucket.org:myteam/auth.git'
首先我查看了 here,因此我尝试生成 new 组 public 和私钥,然后 t运行sferring他们用 heroku keys:add
结束了,但它不接受私钥。
我也试过this模拟ssh和运行heroku run bash
,然后试过运行ssh-keygen
,但是里面的文件是临时的并在我尝试 运行 服务器时消失了。
最简单的方法是将 username
和 password
放入 URL,如在基本 HTTP 身份验证中一样,例如
gem 'my_gem', :git => 'https://my_username:my_password@github.com/my_github_account/my_repo.git', :ref => 'revision_no'
如果你不想把password
放到Gemfile
,那么你可以把它放到environment variable
.
在 Heroku 上,您可以使用以下命令添加环境变量:
heroku config:add ENV_VAR=VALUE
然后在 Gemfile
中使用此环境变量,如下所示:
gem 'my_gem',
:git => "https://#{ENV['var_private_gem_username']}:#{ENV['var_private_gem_password']}@github.com/my_github_account.git",
:ref => 'rev'
为了避免在开发过程中必须使用 HTTPS,您还可以尝试拆分开发和生产模式,如下所示:
group :development do
gem 'auth', branch: 'master', git: 'git@bitbucket.org:myteam/auth.git'
end
group production do
gem 'my_gem',
:git => "https://#{ENV['var_private_gem_username']}:#{ENV['var_private_gem_password']}@github.com/my_github_account.git",
:ref => 'rev'
end
注意:这两种方法都不是 100% 安全的。但是,第二个选项(存储在 heroku 的环境变量中)比第一个选项(将它们存储在纯文本中)更安全。但是,没有其他选择可以做这样的事情(AFAIK)。