heroku上的bitbucket私有存储库

Mat*_*ias 13 ruby-on-rails heroku bitbucket

我有一个需要宝石的rails应用程序.我在bitbucket上将这个gem托管在私有存储库中.

在我的Gemfile中,我添加了如下的gem:

gem "my-gem", :git => "git@bitbucket.org:my-username/my-gem.git", :branch => 'master'
Run Code Online (Sandbox Code Playgroud)

我想在heroku上部署我的rails应用程序

git push heroku master
Run Code Online (Sandbox Code Playgroud)

现在我总是得到以下错误

Fetching git@bitbucket.org:my-username/my-git-repo.git
Host key verification failed.
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我理解错误,因为存储库设置为私有.但是我该如何解决这个问题呢?

我已经读过这个问题:在bitbucket上使用git部署到Heroku,但我没有真正得到答案:) ..

Nit*_*ked 11

Bitbucket允许在类似于github的存储库URL上进行HTTP基本身份验证.指定gem的URL作为https://username:password@bitbucket.org/username/gemrepo.git.

确实意味着你的Gemfile中有你的用户名和密码,它本身就是版本控制的,这不是一个好习惯,但另一方面,这是Heroku推荐的,所以......

  • 为了避免与在Gemfile中存储您的bitbucket密码相关的安全问题,只需创建一个新用户并授予它对该私有gem存储库的读访问权限.有关详细信息,请参阅[this post](http://www.itsudo.com/gems/2013/10/20/private-gems-on-bitbucket.html). (4认同)

Zeq*_*uez 8

实现此目的的正确方法是使用 bundle config,它将配置保存在您的主目录中,.bundle/config因此它位于 repo 之外。

bundle config bitbucket.org user:pwd

然后在 Heroku 上,您必须以特殊方式设置一个简单的配置

heroku config:set BUNDLE_BITBUCKET__ORG=user:pwd

在您的 Gemfile 中,您只需使用没有凭据的 URL。

gem 'gemname', git: "https://bitbucket.org/User/gemname.git"


小智 6

我有同样的问题,但我最终做了以下作为提供Bitbucket密码的解决方法Gemfile.

基本的想法是将Bitbucket中的gem克隆到本地目录中,将其添加到您的应用程序并将其打包,vendor/cache以便Heroku可以使用它.我的确切步骤如下:

  1. 将您的gem克隆到本地目录:

    git clone git@bitbucket.org:me/my_private_gem.git /home/me/my_private_gem

  2. 添加宝石Gemfile作为'假'Bitbucket回购:

    gem 'my_private_gem', :git => 'git@bitbucket.org:me/my_private_gem.git', :branch => 'master' # this repo will not be used

  3. 配置Bundler以对照本地存储库(在步骤1中克隆gem的位置):

    bundle config local.my_private_gem /home/me/my_private_gem

  4. bundle install像往常一样运行,你应该看到这样的事情:

    使用git@bitbucket.org中的my_private_gem(0.0.1):me/my_private_gem.git(at/home/me/my_private_gem)

  5. 将所有宝石打包成 /vendor

    bundle package --all

  6. 添加/vendor到您的仓库

    git add vendor && git commit -m 'add my_private_gem to /vendor/cache'

  7. 推送到Heroku(不要忘记提交更新GemfileGemfile.lock第一个),你应该看到如下内容:

    使用git://github.com/my_private_gem/my_private_gem.git中的my_private_gem(0.0.1)(在/ tmp/build_19fmj3tup0zy2/vendor/cache/my_private_gem-8bc6f436e2c8)

参考文献: