RailsでTravis CI使うメモ
GitHub側の準備
個人のリポジトリだとTravis CIにログインした時点で読み込まれるけど,チーム(Organization)だと自分で設定する必要があるみたい.
GitHubリポジトリの Settings → Webhooks & Services → Services
にTravisのUserとTokenを入力して追加する.
(TokenはTravisの Accounts → Profile で見られる.)
.travis.yml
Travisはリポジトリ直下の.travis.ymlに書いた設定に従ってテストする.
今回はRails用に以下のように書いてみた.
language: ruby rvm: - 2.1.2 bundler_args: --without development env: - DB=postgresql before_script: - cp config/database.yml.travis config/database.yml script: - bundle exec rake db:drop db:create db:migrate db:seed - bundle exec rake spec notifications: email: false
自分でTravisの設定書くのは初めてなので,無駄とか不足があるかも.
config/database.yml.travisでは,usernameとpasswordは空にしておく.
AnsibleでRailsをデプロイ
インターンシップで構成管理ツールのansibleを使う機会があり,それから愛用するようになった.
ansibleではyaml形式でplaybookと呼ばれるレシピを書き,それをssh経由で実行する.
(操作を抽象化するモジュールが標準で多く準備されている.ドキュメント参照.)
chefのようにクライアント側の用意が必要なく,シンプルなのが良い.
今回は,学生プロジェクトで開発中のrailsアプリをデプロイするplaybookを作成してみた.
前提条件
デプロイ先となる本番サーバには,nginxとDB(postgreなど)はインストール済とする.
作成したplaybook
hostsにデプロイするrailsのgitリポジトリとプロジェクト名,本番DBのパスワードを書く.
ansible-playbook -i hosts deploy.ymlを実行すると,以下の順で処理が走る.
デプロイ用Rakeタスク
rake deploy:ansibleで実行できるようにRakeタスクも作成した.
- lib/tasks/deploy.rake
namespace :deploy do desc 'Deploy using Ansible' task :ansible do hosts = "#{Rails.root}/playbook/hosts" playbook = "#{Rails.root}/playbook/deploy.yml" system "ansible-playbook -i #{hosts} #{playbook}" end end
まとめ
ちまちま開発して頻繁にデプロイするので,自動化で便利になった.
あと,ヒューマンエラーが無くなるのも良いかな.
これからもansibleを使ってガンガン自動化を推し進めていきたい.