2024.11.14
いまさらNode.jsを知ろう~環境構築も~
2015.10.28
開発環境・ツールRailsアプリをTravisCI使ってHerokuに自動デプロイする
こんにちは。KTです。
MA11用のサービス作ってた時に、RailsをTravisCI使って自動的にHerokuにデプロイするようにしてたので、紹介します。
RubyのフルスタックMVCフレームワークです。多分Rubyのフレームワークのなかで一番有名なんじゃないかな。
もとはRails向けに作られたPaasです。簡単に言うと「会員登録してGitでPushすればアプリを公開できるよ」なサービスです。
CI(継続的インテグレーション)用ツールの一つです。簡単に言うと「GithubにPushしてテストしてHerokuにデプロイしてって作業を自動でやってくれる」ツールです。
CIだとJenkinsが有名ですが、TravisCIにはRailsとかGithubとかHerokuの設定がデフォで用意されてるので、今回はTravisCIを選びました。
Rails標準で開発者向けに用意されているDBはSQLiteなんですが、Herokuではサポートしていないので、本番の環境ではPostgreSQLを使うようにRailsを修正します。
Gemfileに下記を追加
group :production do
gem 'pg'
end
config/database.ymlのproductionの設定を変更
production:
- <<: *default
- database: db/production.sqlite3
+ adapter: pg
+ database: db/production.pg
Railsでは標準でAltJSにCoffeeScript、AltCSSにScssを使うようになっているので、コンパイルする設定を追加しましょう。
config/environments/production.rbの下記を修正
- config.assets.compile = false
+ config.assets.compile = true
Herokuにアップするためにはconfig/secrets.yml
をコミットする必要があるため、下記の様に環境変数から取得するように修正しましょう。
config/secrets.yml
development:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
test:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
また、Herokuで環境変数を設定するために、下記のGemを導入しましょう。
Gemfile
group :production do
+ gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets'
+ gem 'rails_12factor'
gem 'pg'
end
その後、bundle install
でインストールし、
bundle exec rake heroku:secrets[app-name] RAILS_ENV=production
でHerokuにSecretsを登録すればOKです。
※ ローカル開発環境で確認する際にも環境変数を設定するのを忘れないこと。
ここまでの設定で、PushすればHerokuで動く環境は出来ているはず。。。
いよいよ本題のTravisCIの設定方法について。
兎にも角にもまずはアカウント登録が必要になるので、TravisCIのサイトからアカウントを登録し、Githubのリポジトリとの紐付けまで終わらせちゃってください。
TravisCIを簡単に使うためのRuby Gemsがあるのでそれを使いましょう。
Gemfileにgem 'travis'
と追加してbundle install
を実行すればインストールされます。
Railsアプリのルートディレクトリに移動してターミナルから
travis init
と実行し、色々質問されるので答えていけば、.travis.yml
ファイルが生成されます。
あとは、この.travis.yml
を適宜修正してGithubにPushすれば完了です。(簡単ですね!
さて、上述の通り.travis.ymlにHerokuにデプロイする設定を書いていきます。。
なんてことはする必要はないです。コマンド一発でOKです。
travis setup heroku
あとは色々聞かれるので適宜答えてください。
3.まででTravisCIの設定は一通り完了、なのですが、そのままでは自動テスト、自動デプロイに非常に時間がかかってしまうので、ささっと高速化出来る部分だけ対応しちゃいましょう。
ちなみに、現時点では.travis.yml
は以下のようになっているはずです。
language: ruby
rvm:
- 2.0.0
- 1.9.3
- jruby-19mode
- rbx-2
deploy:
provider: heroku
api_key:
secure: hogehoge
app: app-name
on:
repo: k-t/app-name
まずは不要なRubyのバージョンを削除します。
rvm:
- 2.0.0
-- 1.9.3
-- jruby-19mode
-- rbx-2
deploy:
さらに、bundle installの結果をキャッシュするようにしましょう。(毎回bundle installが行われるので)
rvm:
- 2.0.0
+cache: bundler
deploy:
あとは、この.travis.yml
をGithubにPushすれば完了です。
これだけでGithubのトピックブランチにコードをPushする度に自動テストが行われ、更にmasterブランチにマージされる度にHerokuに自動デプロイされるようになります。
このとおり、Rails、Herokuを使っている分には、TravisCIは非常に簡単にCI環境を構築することが出来ます。
しかもGithubのパブリックリポジトリを使っている場合は無料です!(プライベートリポジトリの場合は有料で、しかも結構なお値段となります。。。
業務に適用するかどうかは別として、趣味で使う分には最良のCIツールの1つだと思うので、是非使ってみてください。
以上、でわでわ
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索