Je me demande s'il existe un moyen de forcer Heroku à recompiler le slug sans pousser de nouveaux commits et / ou mettre à jour les variables de configuration.
Pourquoi voudrais-je faire cela?:
J'utilise la pile Cedar sur Heroku pour une application Rails 3.2, et j'ai des problèmes avec l' rake assets:precompile
échec de la tâche (pendant la compilation seulement - plus tard, cela fonctionne bien avec a heroku run
). Je soupçonne fortement que cela est dû au fait que certaines variables d'environnement ne sont pas disponibles pendant la compilation du slug, et je pense que la heroku labs:enable user_env_compile
fonctionnalité expérimentale résoudra ce problème.
Cependant, avec la user_env_compile
fonctionnalité activée, les changements de configuration ne déclenchent pas une recompilation du slug, et mon code n'a pas changé, donc je n'ai pas de nouveaux commits à pousser.
Bien sûr, je pourrais pousser un commit "factice" avec un changement trivial, ce qui est probablement la réponse la plus simple --- mais je me demande s'il existe une commande heroku qui me permettra de recompiler directement le slug.
Merci!
Réponses:
La compilation Slug est appelée avec un hook git pre-recieve, donc la seule façon de recompiler est de pousser un nouveau commit.
Pour être complet, consultez cet article sur Heroku pour le compilateur de slug . Il a discuté de l'utilisation du hook de pré-réception pour appeler le processus de compilation de slug sous l'en-tête Compilation.
la source
repo:rebuild
n'est plus une commande valide dans le plug-in, comme on peut le voir ici: github.com/heroku/heroku-repo/commit/…La solution de contournement la plus simple pour le moment est de pousser un commit vide .
la source
git reset HEAD~; git push -f heroku master
. Entraîne le coût en temps d'un autre déploiement Heroku, mais nettoie l'historique FTW.~/.profile
ajoutez ceci:alias heroku-rebuild="git reset HEAD~; git push -f heroku master"
oualias heroku-rebuild="git commit --allow-empty -m 'empty commit' && git push heroku master"
alors vous pouvez simplement taperheroku-rebuild
Mon approche générale est de faire:
Je ne suis pas sûr de le faire en production sans en être certain, car cela réécrit techniquement le dernier commit, mais cela ne devrait pas poser de problèmes en théorie. C'est parfaitement bien lorsque vous testez des choses en staging.
En prime, car la plupart des gens ont du mal à utiliser Vim pour modifier les messages de validation
SHIFT-ZZ
, enregistrera et quittera rapidement le message de validation pour vous sans y apporter de modifications.Sur une note connexe, je suis légèrement choqué que Heroku ne dispose toujours pas de cette fonctionnalité. J'ai souvent vu Heroku échouer à se déployer en raison de problèmes de son côté.
Merci à Michael Mior pour l'idée d'utiliser
-C HEAD
pour éviter d'ouvrir un éditeur.la source
git commit --amend -C HEAD
pour éviter d'ouvrir un éditeur et conserver le même message de validation.Heroku a publié un plugin qui demande: https://github.com/heroku/heroku-repo
Pour l'installer:
Pour forcer une reconstruction:
la source
Mise à jour: repo heroku: la reconstruction a été supprimée .
Heroku a une API de construction que vous pouvez utiliser, voir: Construire et publier à l'aide de l'API
Vous pouvez utiliser la commande repo: rebuild si le module complémentaire heroku-repo .
https://github.com/heroku/heroku-repo
la source
Il semble que ce ne soit pas encore disponible. Cependant, une demande de fonctionnalité a été ouverte sur le repo heroku github
Il mentionne également "une autre façon de construire qui ne dépend pas
git push
"https://github.com/ddollar/heroku-anvil
la source
Il existe un plugin heroku pour cela.
la source
Retirez la branche, puis repoussez-la. Pas besoin d'utiliser un plugin.
la source
git push --force
devrait marcher :)la source