pull request が merge された後にそれを開発機側に反映して push で deploy するにあたってサーバ側でどんな処理が必要かを控えておくことに。
まだ諸々のソレは手動です。
とりあえずリポジトリに反映させたらば
bundle install --path vendor/bundler --without test development
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile
kill -9 `cat /tmp/hoge.pid`
RAILS_ENV=production bin/echo_server stop
RAILS_ENV=production bin/echo_server start
bundle exec unicorn_rails -c config/unicorn.rb -E production -D
sudo service nginx restart
で良いのかな。つうことは post-receive な hook で上の処理が書いてあれば良いのか。
別途、これを踏まえて git push で deploy するソレを盛り込む方向です。
自動化?
この環境を自動で作るには、というお題もありますね。
pid なファイル名は
grep pid config/unicorn.rb|awk '{print $2;}'|sed -e 's/[^"]*"\([^"]*\)".*/\1/'
で取得できるんですが、こうすりゃ良いのかな。
kill -9 $(cat `grep pid config/unicorn.rb|awk '{print $2;}'|sed -e 's/[^"]*"\([^"]*\)".*/\1/'`)
いやはや。
試験してみた
大丈夫でした。
これ、okidevops なネタとして
- ansible だとどうやるか
- docker だとどうやるか
ってあたり、アレゲです。