Rails5.2 + GitHub + Travis CI + Heroku連携設定メモ

Rails5.2で開発したアプリをGitHubのリポジトリで管理して、Travis CIでテストを実行して問題なければHerokuにデプロイという仕組みにしたので、その時のメモ。
開発物や設定は、すべてオープンソースにしているので、すこしでも困っているひとの手助けになれたら嬉しいです。

開発物

趣味が開発なので以下はあくまで趣味の範囲で作ったもの。暫定的にHerokuのFreeプランを使っているが1,000レコードまでしか保存できないので、タイミングを見てHobbyプランに切替予定。

ujull-gnote - GitHub

それぞれの役割

Ruby on Rails 5.2

アプリを開発。

GitHub

リポジトリの管理。Travis CI, HerokuとWebhooks連携済み。

Travis CI

GitHubにコミットしたあとにTravis CIに自動連携してテストを実行。テストが通ると自動的にHerokuにデプロイ。
事前にローカルで、RSpecでテスト実行して通ったものをコミットしているが、テスト忘れや凡ミスを防ぐため、本番デプロイ前に必ずTravis CIを通す。デプロイツールみたいな役割として利用。

Heroku

Railsを動かすためのサーバー。

設定時の全体の流れ

そのまま流れに沿って設定できるように各キーワードに設定対象のURLを記述。

Rails

  • Railsでアプリを開発してWeb上で一通り動作できるようにする
  • RSpecでテストをパスする

GitHub

  • GitHubに開発物のリポジトリを作る
  • GitHubにコミットしてGitHub上からコミットしたものが閲覧できるか確認する

Travis CI

Heroku

  • Herokuでアプリを作成して、GitHubと連携設定、初期設定をする
  • Heroku上からアドオン Heroku Postgresを作成する
  • RailsでPostgreSQLで動くように設定する
  • .travis.ymlにdeploy項目を記述する
  • Heroku CLIをインストールして $ heroku login でログインする
  • $ heroku config:set RAILS_MASTER_KEY=[master.keyの値] を実行してHerokuの環境変数にセット(環境変数は $ heroku config で確認可能)
  • $ travis encrypt $(heroku auth:token) --add deploy.api_key を実行すると.travis.ymlのapi_keyのsecureの値が自動的に暗号化された値に書き換わる

以上でGitHubにコミットすると、Travis CIのテストが回って、成功するとHerokuにデプロイされる

ハマりポイント

いろいろとトラップはありますが、エラーメッセージを調べていけば解決できます。
Travis CIはJob logタブの最下部から、Herokuはターミナルで$ heroku logs --tailで、エラーメッセージの確認が可能です。

エラーメッセージで探しても解決できなかったり、情報が少ない場合は自分のサイト上で解決策を投稿済みです。

それ以外でハマっているようであれば、自分の開発物を一式DLして動かしてみて下さい。その際にmaster.keyだけはご自身の内容と置き換えて利用してください。

参考サイト