15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuAdvent Calendar 2015

Day 11

Herokuへのデプロイにプライベートなレポジトリのgemを含める

Last updated at Posted at 2015-12-11

オープンソース万歳!でもたまにはコードを隠しておきたいこともありますよね。

というわけで、HerokuへRubyのコードをデプロイするときに依存ライブラリとしてGitHubのプライベートレポジトリからコードを持って来ましょう。GitHubでアクセストークンを作って、Herokuアプリケーションに設定してデプロイします。トークンを参照するために、buildpackをひとつ挟みます。

この記事はTerence Leeによる『Setting Up Private GitHub Repos with Bundler on Heroku』を元にしています。

トークンの作成

GitHubにログインして、https://github.com/settings/tokens から「Generate new token」をクリックしてトークンを作成します。プライベートレポジトリをcloneするには、「repo」のみをチェックしてあれば充分です。「Generate token」クリックするとトークンが表示されるので、クリップボードにコピーしてください。

ローカルにトークンを設定する

デプロイには必須ではないですが、ローカルにbundle installするときに便利かも。~/.netrcに下記の3行を追加しておくと、毎回パスワードを入力する必要がなくなります。

machine github.com
  login <アカウントのメールアドレス>
  password <ここにトークンをペーストする>

Herokuアプリケーションにトークンを設定する

クリップボードにトークンがあるうちに、Config varにも覚えさせておきましょう。

$ heroku config:set GITHUB_AUTH_TOKEN=<ここにトークンをペーストする> -a <アプリ名>

Buildpackを設定してこのトークンを利用してデプロイ時に参照してもらうようにします。 (このbuildpackはHerokuが公式にサポートしているものではありません。ごめんなさい。)

$ heroku buildpacks:add --index 1 https://github.com/timshadel/heroku-buildpack-github-netrc.git

開発する

:sushi: そうそう、この記事はRubyKaigi 2015の会場からお送りしています。

Gemfileには、レポジトリのhttpsで始まるURLを指定しましょう。

gem "プライベートなgem", git: "https://github.com/アカウント名/レポジトリ名.git"

Gemfile.lockも更新しておきます。

$ bundle install --path=vendor/bundle
$ git add Gemfile Gemfile.lock
$ git commit

もちろんコードの変更もcommitしてくださいね。

Herokuにデプロイする

うまくいきますように。

$ git push heroku master

この記事は、Heroku Advent Calendar 2015の12月11日の記事としてお送りしました。

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?