How to deploy - JunichiIto/rubyist-connect GitHub Wiki

デプロイ手順

このドキュメントではrubyist-connectをHerokuにデプロイする手順を説明します。

うまくいかない場合は Issue 等を利用して質問してください。
また、手順の間違いや他の人も困りそうな補足事項があれば、このWikiを自由に編集してもらって構いません。

最初のセットアップ

すでに完了している人は読み飛ばしてもらって構いません。

Heroku Toolbeltのインストール

Heroku Toolbeltをインストールします。

https://toolbelt.heroku.com/

Git remoteの登録

以下のコマンドでGit remoteを登録します。

$ bin/rake all heroku:remotes

# 確認(productionとstagingが追加されていればOK)
$ git remote         
origin
production
staging
upstream

remoteを登録しておくと、Heroku関連のコマンドを実施する場合にインスタンス名ではなく、productionやstagingという名前で参照できます。

備考

このコマンドはheroku_san gemが提供しているコマンドです。
productionとstagingが追加されたのは、config/heroku.ymlでそのような設定を記述しているためです。

Collaborator権限の取得

Herokuにデプロイするためには、HerokuのCollaborator権限が必要です。
権限がない場合は、システム管理者(yuji-shimoda)に権限の付与を依頼してください。

rubyist-connectのデプロイ手順

セットアップが完了したら以下の手順でデプロイします。

最新コードのコードを取得する

GitHubから最新のコードを取得します。

git checkout master
git pull

# もしくは
git checkout master
git fetch upstream
git merge upstream/master

テストを実行する

テストを実行し、すべてパスすることを確認します。

bin/rspec

デプロイを実行する

デプロイを実行します。

# stagingにデプロイする場合
bin/rake staging deploy

# productionにデプロイする場合
bin/rake production deploy

【重要】デプロイ時の注意点

  • productionにデプロイする場合は必ずstagingでの動作環境を行ってからデプロイすること。
  • 既存データの更新が必要な場合など、単純なプログラム更新だけで終わらない場合は適切なデプロイ手順を考えること。
    • 失敗すると致命的な問題が発生する場合は事前に手順書を作成し、その手順に従ってデプロイを行う。
    • デプロイ中にユーザーに操作されるとデータの不整合が発生そうな場合は、サービスを一時的にサービスを停止させる。
    • 必要に応じてデプロイ直前にデータベースのバックアップも行う。
    • 手順書にはロールバック手順も書く。
    • できればペアでデプロイを行う。

動作確認する

デプロイが完了したら動作確認してください。

http://rubyist-connect-staging.herokuapp.com/

http://kobe.rubyist.co/nnect

Heroku Tips集

stagingになっている部分は必要に応じてproductionに置き換えてください。

また、以下のコマンドはheroku_sanとHeroku Toolbeltの両方で用意されているものも多いので、必ずしもこのコマンドしか使えない、というわけではありません。

Rails consoleを開く

データの更新を行わない場合

heroku run rails c --sandbox -r staging

データの更新を行う場合

heroku run rails c -r staging

config/heroku.ymlに設定されている環境変数を反映する

bin/rake staging heroku:config

Secret baseやAPI token等、クレデンシャルな情報はheroku.ymlに保存せず、個別に登録してください。

heroku config:set SECRET_KEY_BASE=xxxx -r staging

Heroku上の環境変数を確認する

heroku config -r staging

rakeコマンドを実行する

heroku run rake (コマンド名) -r staging

# 例
heroku run rake routes -r staging

インスタンスを再起動する

heroku restart -r staging

強制的にデプロイする

何らかの事情でHerokuとローカルの整合性があわなくなった場合は、forceオプションを付けることで強制的にデプロイすることができます。

bin/rake staging deploy:force

一時的にシステムを停止する

データのメンテナンス等が必要な場合は以下のコマンドでシステムを停止することができます。

heroku maintenance:on -r staging

再開させる場合は off してください。

heroku maintenance:off -r staging

データベースのバックアップを手動実行する

PG Backups add-onを使うと定期的にバックアップを実行してくれますが、手動実行したい場合は以下のコマンドを実行します。

heroku pgbackups:capture --expire -r staging

現在保存されているバックアップの一覧は以下のコマンドで確認できます。

heroku pgbackups -r staging