Stellen Sie die Heroku-App ohne Codeänderungen erneut bereit

81

Ich möchte eine Heroku-App bereitstellen, die idealerweise verwendet wird git push -u heroku master. Dies funktioniert jedoch nur, wenn ausstehende Commits an den Master gesendet werden müssen.

Wie kann ich die App erneut bereitstellen, während nichts zu pushen ist? Ich habe versucht git push -u heroku master -fund immer noch das gleiche unten

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

PS: Ich möchte auch die vorhandene App beibehalten, was bedeutet, dass ich diese Antwort https://stackoverflow.com/a/22043184/968442 nicht verwenden kann

nehem
quelle
3
Das klingt nach einem XY-Problem . Was hoffen Sie zu erreichen, wenn Sie denselben Code erneut bereitstellen?
Chris
1
Ein Fall, in dem ich die wenigen Konfigurationen geändert habe, die eine Neuverteilung, aber keine
Zusagen
1
Durch das Festlegen einer Konfigurationsvariablen wird Ihre Anwendung neu gestartet. Es sollte wirksam werden, ohne dass eine erneute Bereitstellung erforderlich ist. Kannst du genauer sein?
Chris
2
Leider war die von mir entfernte Konfigurationsvariable, DISABLE_COLLECTSTATIC=1die einen anderen Django-Befehl aufrufen soll, manage.py collectstaticder in die Heroku-Bereitstellungslogik eingebunden ist.
Nehem

Antworten:

130

Wenn Sie normalerweise eine Konfigurationsvariable festlegen, wird Ihre Anwendung neu gestartet. In den meisten Situationen sollte danach keine erneute Bereitstellung erforderlich sein.

Wenn Sie wirklich eine neue Bereitstellung auslösen müssen, können Sie ein neues leeres Commit hinzufügen und dann erneut zu Heroku wechseln:

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

Das neue leere Commit ist ein reguläres Commit. Es hat einen Hash, einen Autor, einen Zeitstempel usw. Es hat den gleichen Baum wie sein übergeordnetes Element. Dies sollte dazu führen, dass Heroku Ihren App-Slug erneut mit demselben Code wie beim vorherigen Commit erstellt.

Es ist etwas umständlich, aber es funktioniert.

Chris
quelle
Klingt fair genug und macht den Job. Jetzt bin ich versucht, das Repository ( .git) zu sichern / wiederherzustellen , um dieses Commit vor Github zu verbergen.
Nehem
@itsneo, ich würde mich nicht darum kümmern. Es ist ein hässliches Commit, aber wenn Sie weiterhin Code über das vorherige Commit schreiben, müssen Sie beim nächsten Mal einen Push an Heroku erzwingen. Das ist keine gute Angewohnheit, obwohl es manchmal notwendig sein kann ...
Chris
Auch wenn git commit --allow-emptyich Everything up-to-datevon Heroku erhalte ...
Benny Neugebauer
@BennyNeugebauer, bitte schau dir deine an git log. Haben Sie vor dem Push erfolgreich ein neues Commit erstellt?
Chris
4
Ah, ich sehe das Problem! Ich war in einer anderen lokalen Niederlassung (als master). Also musste ich ausführen : git push -f heroku the_branch_i_changed:master.
Benny Neugebauer
20

Sie können dies auch über die Benutzeroberfläche tun!

  1. Melden Sie sich bei Ihrem HerokuDashboard an und gehen Sie zum deployAbschnitt
  2. Suche Manual deployOption

Hit - Deploy BranchButton klicken!

Geben Sie hier die Bildbeschreibung ein

Hardik Raval
quelle
1
Es ist erwähnenswert, dass Sie Ihre App mit GitHub verbunden haben müssen, damit diese Option verfügbar ist. Wenn Sie die Heroku Git-Bereitstellungsmethode verwenden, ohne die App mit dem GitHub-Repo verbunden zu haben, ist die manuelle Bereitstellung nicht sofort ersichtlich.
Derek
11

Es gibt jetzt auch ein Plugin für die Heroku-Befehlszeile, mit dem Sie den zuletzt bereitgestellten Slug erneut veröffentlichen können.

Siehe https://www.npmjs.com/package/heroku-releases-retry

Richard
quelle
Zuerst dachte ich, dies sei die Lösung, aber tatsächlich wird sie nur erneut bereitgestellt, aber nicht neu erstellt. Es gibt jedoch eine Möglichkeit, die Git-Historie auch neu zu erstellen, ohne sie zu beeinträchtigen, indem Sie ein neues Commit ausführen
aef
2

Du kannst rennen heroku restart --app app_nameund du kannst loslegen.

Leandro
quelle
2
Dadurch wird die App nicht neu erstellt, sondern nur neu
gestartet
@PanMan Die Frage lautet "Wie kann ich die App erneut bereitstellen, während nichts zu pushen ist?". Es wird nicht darum gebeten, die App neu zu erstellen, sondern neu zu starten. Da es keine Änderungen gab, verstehe ich nicht, warum Sie das sowieso wollen würden.
Leandro