Skip to content
iwhurtafly edited this page Jan 16, 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           [email protected]       5 minutes ago            
v51   Deploy de63889                  [email protected]   7 minutes ago
v50   Deploy 7c35f77                  [email protected]   3 hours ago
v49   Rollback to v46                 [email protected]       2010-09-12 15:32:17 -0700

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

:::term
$ heroku releases:info v24
=== Release v24
Change:      Deploy 575bfa8
By:          [email protected]
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