Skip to content
shunter1112 edited this page Sep 6, 2013 · 5 revisions

コードをデプロイする際や、環境変数を変更する際、またはアドオンを追加・削除する際、その都度Herokuは新規リリースを作り、アプリケーションを再起動させます。リリースの履歴をリスト化することが可能ですし、実施してしまった不正なデプロイや設定の変更を元に戻すために、以前のリリースへロールバックすることも可能です。

リリースの作成

リリースは、vNNの形式で命名されます。NNの箇所は可変で、リリース毎にシーケンスナンバーが振られます。

リリースは、コードをHerokuへデプロイする都度、作成されます。この例では、「v10」がデプロイによって作成されたリリースとなります。:

:::term
$ git push heroku master
...
-----> Compiled slug size is 8.3MB
-----> Launching... done, v10
       http://severe-mountain-793.herokuapp.com deployed to Heroku

リリースは、環境変数を変更する場合でも、作成されます。この例では、「v11」が環境変数の変更によって作成されたリリースとなります。:

:::term
$ heroku config:add MYVAR=42
Adding config vars:
  MYVAR => 42
Updating vars and restarting app... done, v11

さらに、アドオンを追加、削除、アップグレード、ダウングレードする場合にも、リリースが作成されます。この例では、「v12」がアドオンの設定変更によって作成されたリリースとなります。:

:::term
$ heroku addons:add memcache
Adding memcache to myapp... done, v12 (free)

リリース履歴のリスト化

アプリケーションのリリース履歴を参照するには、下記のコマンドを実行します。:

:::term
$ heroku releases
Rel   Change                          By                    When
----  ----------------------          ----------            ----------
v52   Config add AWS_S3_KEY           jim@example.com       5 minutes ago            
v51   Deploy de63889                  stephan@example.com   7 minutes ago
v50   Deploy 7c35f77                  stephan@example.com   3 hours ago
v49   Rollback to v46                 joe@example.com       2010-09-12 15:32:17 -0700

デプロイメッセージの横の数字、例えばde63889、はHerokuにデプロイしたリポジトリのコミットハッシュと一致します。 リリースの中野編国とあなたのコードリポジトリの中の変更の関連を比較するためにこれを使ってください。例えば :

:::term
$ git log -n 1 de63889
commit de63889c20a96347679af2c5160c390727fa6749
Author: <stephan@example.com>
Date:   Thu Jul 11 17:16:20 2013 +0200
Fixed listing CSS and localisation of description.

リリースに関する詳細な情報を取得するには、下記のコマンドを実行します。:

:::term
$ heroku releases:info v24
=== Release v24
Change:      Deploy 575bfa8
By:          jim@example.com
When:        6 hours ago
Addons:      deployhooks:email, releases:advanced
Config:      MY_CONFIG_VAR => 42
             RACK_ENV      => production

ロールバック

アドオンの状態を変更したリリースに関しては、ロールバックすることが出来ません。これは課金に影響が発生するためです。

直近のリリースに対し、ロールバックを実行するために、rollbackコマンドを使用して下さい。:

:::term
$ heroku rollback
Rolled back to v51

リリースのバージョンを詳細に指定することで、ロールバックするターゲットを選択することも可能です。:

:::term
$ heroku rollback v40
Rolled back to v40

ロールバックは、ターゲットとなるリリースに含まれるコードの状態と環境変数をコピーした新たなリリースを作成することとなります。データベースの状態、アドオンによってを保持される外部の状態(例えば、memcacheの中身等)は、影響 されません 。そのため、これらをロールバックによるリリースと折り合いを付けるのは、アプリケーションの作成者に委ねられます。

ロールバックされたコードを実行することは、不正なデプロイに対しての 一時的な修正 を意味します。ロールバックされたコードを使用し、slugが再コンパイル(新規のデプロイ以外のいかなる理由により)された場合、アプリケーションは、一番最新のリリース上で実行されるように戻されます。新たなアドオンを追加した場合や環境変数の追加、削除を行うことが、slugを再コンパイルする結果となります。

Clone this wiki locally