-
Notifications
You must be signed in to change notification settings - Fork 9
releases
コードをデプロイする際や、環境変数を変更する際、またはアドオンを追加・削除する際、その都度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を再コンパイルする結果となります。