Rails5.2で開発したアプリをGitHubのリポジトリで管理して、Travis CIでテストを実行して問題なければHerokuにデプロイという仕組みにしたので、その時のメモ。
開発物や設定は、すべてオープンソースにしているので、すこしでも困っているひとの手助けになれたら嬉しいです。
Agenda
開発物
趣味が開発なので以下はあくまで趣味の範囲で作ったもの。暫定的にHerokuのFreeプランを使っているが1,000レコードまでしか保存できないので、タイミングを見てHobbyプランに切替予定。
それぞれの役割
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
- Travis CIでGitHubとの連携設定、初期設定をする
- Travis CIの対象リポジトリのSettingsから「Environment Variables」に「RAILS_MASTER_KEY」を登録する
- .travis.ymlを作成してGitHubにコミットする。API KEYはのちほど正しい値に書き換える
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だけはご自身の内容と置き換えて利用してください。
参考サイト
- Automatically deploy with Travis CI and Heroku ← 1から丁寧に解説していてアニメーション操作もあるため非常にわかりやすい