コードを変更せずにHerokuアプリを再デプロイする


88

を使用して理想的に実行されるHerokuアプリをデプロイしたいと思いgit push -u heroku masterます。ただし、これは、マスターにプッシュされる保留中のコミットがある場合にのみ機能します。

プッシュするものがないときにアプリを再デプロイするにはどうすればよいですか?私は試しましたがgit push -u heroku master -f、それでも以下で同じようになります

Branch master set up to track remote branch master from heroku.
Everything up-to-date

PS:既存のアプリも保持したいので、この回答を利用できませんhttps://stackoverflow.com/a/22043184/968442


3
これはXYの問題のように聞こえます。同じコードを再度デプロイすることで何を達成したいと思いますか?
クリス

1
いくつかのconfigvarsを変更した場合、再デプロイに値するがコミットはありません
nehem 2016

1
config var設定すると、アプリケーションが再起動します。再デプロイせずに有効になります。もっと具体的にできますか?
クリス

2
残念ながら、削除したconfigvarはでしたDISABLE_COLLECTSTATIC=1。これは、manage.py collectstaticherokuデプロイメントロジックにフックされている別のDjangoコマンドを呼び出すことになっています。
nehem 2016

回答:


139

通常、config varを設定すると、アプリケーションが再起動します。ほとんどの場合、これを行った後に再デプロイする必要はありません。

本当に新しいデプロイメントをトリガーする必要がある場合は、新しい空のコミットを追加してから、Herokuに再度プッシュできます。

git commit --allow-empty -m "Trigger Heroku deploy after enabling collectstatic"
git push heroku master

新しい空のコミットは通常のコミットです。ハッシュ、作成者、タイムスタンプなどがあります。親と同じツリーがあります。これにより、Herokuは、前のコミットと同じコードを使用してアプリスラッグを再構築する必要があります。

少し厄介ですが、機能します。


十分に公平に聞こえ、仕事をします。今、私は.gitこのコミットをgithubから隠すために、repository()をバックアップ/復元したくなります。
nehem 2016

@itsneo、私は気にしません。これは醜いコミットですが、前のコミットの上にコードを書き続けると、次回はHerokuに強制的にプッシュする必要があります。それは時々必要になるかもしれませんが、それは入るのに良い習慣ではありません…
クリス

でも、とgit commit --allow-empty私は受け付けておりEverything up-to-dateHerokuのから...
ベニー・ノイゲバウアー

@BennyNeugebauer、あなたを見てくださいgit log。プッシュする前に、新しいコミットを正常に作成しましたか?
クリス

4
ああ、問題が発生しました。私は別のローカルブランチにいました(よりmaster)。だから私は実行しなければなりませんでした:git push -f heroku the_branch_i_changed:master
Benny Neugebauer 2017

22

UIからもできます!

  1. Herokuダッシュボードにログインして、deployセクションに移動します
  2. Manual deployオプションを探す

ヒットDeploy Branchボタン!

ここに画像の説明を入力してください


2
このオプションを利用するには、アプリをGitHubに接続する必要があることに注意してください。アプリをGitHubリポジトリに接続せずに、Heroku Gitのデプロイ方法を使用している場合、手動でデプロイする方法はすぐにはわかりません。
デレク

11

最近デプロイされたスラッグを再リリースできるHerokuコマンドラインのプラグインもあります。

https://www.npmjs.com/package/heroku-releases-retryを参照してください


最初はこれが解決策だと思いましたが、実際には再配置するだけで再構築はしません。しかし、新しいコミットをプッシュすることで、Gitの履歴を損なうことなく再構築する方法もあります:stackoverflow.com/q/9713183/322863
aef 2010

4

あなたは走ることができheroku restart --app app_name、あなたは行ってもいいです。


3
このことは、それだけでそれを再起動し、アプリケーションを再構築しない
PanMan

@PanMan質問には、「プッシュするものがないときにアプリを再デプロイするにはどうすればよいですか?」と書かれています。アプリを再構築するのではなく、再起動するように求めています。変更がなかったため、とにかくなぜやりたいのかわかりません。
レアンドロ

1
「再起動」ではなく「再デプロイ」と明確に書かれています。たとえば、HerokuでアプリをDocker化しようとしているため、再デプロイする必要があります(再起動する必要はありません)。デバッグ中は、gitツリーを汚染する可能性はありません。それが私がこのSOの質問にたどり着いた方法です。
マイク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.