Ich frage mich, ob es eine Möglichkeit gibt, Heroku zu zwingen, den Slug neu zu kompilieren, ohne neue Commits zu pushen und / oder die Konfigurationsvariablen zu aktualisieren.
Warum sollte ich das tun wollen?:
Ich verwende den Cedar-Stack auf Heroku für eine Rails 3.2-App und habe Probleme mit dem rake assets:precompile
Fehlschlagen der Aufgabe (nur während der Kompilierung - später funktioniert es einwandfrei mit a heroku run
). Ich vermute sehr, dass dies darauf zurückzuführen ist, dass bestimmte Umgebungsvariablen während der Slug-Kompilierungszeit nicht verfügbar sind, und ich denke, dass die heroku labs:enable user_env_compile
experimentelle Funktion dies lösen wird.
Doch mit der user_env_compile
Funktion eingeschaltet, Konfigurationsänderungen auslösen keine Neuübersetzung des Rohlings, und mein Code nicht geändert hat, so dass ich keine neue Commits Push verfügen.
Natürlich könnte ich ein "Dummy" -Commit mit einer trivialen Änderung drücken, was wahrscheinlich die einfachste Antwort ist - aber ich frage mich, ob es einen Heroku-Befehl gibt, mit dem ich den Slug direkt neu kompilieren kann.
Vielen Dank!
Antworten:
Die Slug-Kompilierung wird mit einem Git-Pre-Recieve-Hook aufgerufen. Die einzige Möglichkeit zum Neukompilieren besteht darin, ein neues Commit zu pushen.
Der Vollständigkeit halber lesen Sie diesen Artikel über Heroku für den Slug-Compiler . Es wurde die Verwendung des Pre-Recieve-Hooks zum Aufrufen des Slug-Kompilierungsprozesses unter der Überschrift Compilation erläutert.
quelle
repo:rebuild
ist kein gültiger Befehl mehr im Plug-In, wie hier zu sehen ist: github.com/heroku/heroku-repo/commit/…Die derzeit einfachste Problemumgehung besteht darin , ein leeres Commit zu pushen .
quelle
git reset HEAD~; git push -f heroku master
. Entsteht die Zeitkosten für eine andere Heroku-Bereitstellung, aber eine saubere Geschichte FTW.~/.profile
fügen Sie einen Alias hinzu:alias heroku-rebuild="git reset HEAD~; git push -f heroku master"
oderalias heroku-rebuild="git commit --allow-empty -m 'empty commit' && git push heroku master"
so können Sie einfachheroku-rebuild
Mein allgemeiner Ansatz ist:
Ich bin mir nicht sicher, ob ich dies in der Produktion tun würde, ohne sicher zu sein, da es das letzte Commit technisch umschreibt, aber theoretisch keine Probleme verursachen sollte. Es ist jedoch vollkommen in Ordnung, wenn Sie Dinge in der Inszenierung testen.
Als zusätzlichen Bonus, da die meisten Leute Probleme haben, Vim zum Bearbeiten von Commit-Nachrichten zu verwenden
SHIFT-ZZ
schnell gespeichert und beendet, ohne Änderungen daran vorzunehmen.In einem ähnlichen Zusammenhang bin ich leicht schockiert, dass Heroku diese Funktion immer noch nicht hat. Ich habe oft gesehen, dass Heroku aufgrund von Problemen am Ende nicht bereitgestellt werden konnte.
Vielen Dank an Michael Mior für die Idee,
-C HEAD
einen Editor nicht zu öffnen.quelle
git commit --amend -C HEAD
, um das Öffnen eines Editors zu vermeiden und die Commit-Nachricht gleich zu halten.Heroku hat ein Plugin veröffentlicht, das gefragt wird: https://github.com/heroku/heroku-repo
So installieren Sie es:
So erzwingen Sie einen Wiederaufbau:
quelle
Update: Heroku Repo: Neuaufbau wurde entfernt .
Heroku verfügt über eine Build-API, die Sie verwenden können (siehe: Erstellen und Freigeben mithilfe der API)
Sie können den Befehl repo: rebuild verwenden, wenn das Heroku-Repo- Add-On verwendet wird.
https://github.com/heroku/heroku-repo
quelle
Sieht so aus, als wäre dies noch nicht verfügbar. Auf dem Heroku Github Repo wurde jedoch eine Feature-Anfrage geöffnet
Es wird auch erwähnt, "eine alternative Art zu bauen, die nicht abhängig ist
git push
"https://github.com/ddollar/heroku-anvil
quelle
Dafür gibt es ein Heroku-Plugin .
quelle
Entfernen Sie den Zweig und drücken Sie ihn erneut. Sie müssen kein Plugin verwenden.
quelle
git push --force
sollte arbeiten :)quelle