2016-08-28 10 views

答えて

1

私が知っている限り、Heroku API経由でこれを行う方法はありません。 Heroku Platform APIはこれをサポートしていません。

あなたができること(高速ですが!)は、コード内のSIGTERMメッセージをリッスンします(これはHerokuがアプリケーションプロセスを再起動しようとするとそのプロセスに送信されます)すぐにあなたのスクリプト。あなたはCIのいくつかの並べ替えを使用している場合、あなたはおそらくそこにそれを設定することができますhttps://devcenter.heroku.com/articles/dynos#graceful-shutdown-with-sigterm

+1

高速実行コードの場合、これは良い解決策のようです。 –

+0

もう一つの解決策は、ログドレイン(https://devcenter.heroku.com/articles/log-drains)を介してHerokuログを購読してから、dyno restartログイベントを待ち受けることです。 – rdegges

+0

聞いているのは誰ですか? –

1

はここでHerokuの上SIGTERMについての詳細です。相続人はCircleCIでそれを行う方法:

deployment: 
    production: 
    branch: production 
    commands: 
     - git push [email protected]:foo-bar-123.git $CIRCLE_SHA1:master 
     - heroku run rake <your task> --app <your app name> 

をあなたはまだ一緒に最初のHerokuのにGitのプッシュを行い、その後、heroku run(アプリ年代を通じてタスクをつぶし、あなたのキャッシュを実行するスクリプトを鞭打つことができCIを使用していない場合bin/フォルダは明白な場所になります)。

注:heroku run:detachedを使用すると、stdoutではなくログに出力が送信されます。

+0

このユースケースの一部は、Herokuアプリがデプロイ以外の理由で再起動されることです。特にENVを変更する場合。 –

+0

さて、あなたはいつも2つのスクリプト、またはモジュラーのスクリプトを書くことができます。スクリプトの最初の引数が "deploy"であるかどうかを確認してから、キャッシュをデプロイしてフラッシュしてください。それが "再起動"している場合は、必要なENV変数を変更し(パスして)、再起動してフラッシュします。本当に難しいことではありません。 –

1

新しいリリースが導入される前にコマンドを実行できる「リリース」機能を使用できます。 https://devcenter.heroku.com/articles/release-phase

Procfileで実行するコマンドを定義します。ドキュメントから

release: rake db:migrate 

:リリースが作成された後

解除コマンドがすぐに実行されますが、リリースは、アプリのダイノ形成に配備される前に。つまり、新しいリリースを作成するイベントの後に実行されます。

関連する問題