web-dev-qa-db-fra.com

Recompiler le slug Heroku sans changement de Push ou config

Je me demande s’il est possible 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 de cèdre sur Heroku pour une Rails 3.2) et j'ai des problèmes avec le rake assets:precompile échec de la tâche (lors de la compilation uniquement --- plus tard, cela fonctionne correctement avec un heroku run). Je soupçonne fortement que cela est dû au fait que certaines variables d'environnement ne sont pas disponibles pendant le temps de compilation de slug, et je pense que le heroku labs:enable user_env_compile fonctionnalité expérimentale va résoudre ce problème.

Cependant, avec le user_env_compile fonction activée, les modifications de configuration ne déclenchent pas une recompilation du slug, et mon code n’a pas changé, je n’ai donc pas de nouveaux commits à envoyer.

Bien sûr, je pourrais pousser un "fictif" commit 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!

128
Nathan

La compilation Slug est invoquée avec un hook pré-reçu, donc le seul moyen de recompiler est de pousser un nouveau commit.

Pour plus de détails, consultez cet article sur Heroku pour le compilateur slug . Il a discuté de l’utilisation du crochet de pré-réception pour appeler le processus de compilation slug sous l’en-tête Compilation.

86
nmott

La solution la plus simple pour l'instant consiste à envoyer un commit vide .

git commit --allow-empty -m "empty commit"
git Push heroku master
212
Brad Koch

Mon approche générale est de faire:

git commit --amend -C HEAD
git Push heroku:master -f

Je ne suis pas sûr de pouvoir le faire en production sans en être certain, car cela réécrit techniquement le dernier commit, mais cela ne devrait poser aucun problème en théorie. C’est parfaitement bien quand vous testez des choses dans la mise en scène.

En prime, étant donné que la plupart des gens ont du mal à utiliser Vim pour éditer les messages de validation SHIFT-ZZ va rapidement enregistrer et quitter le message de validation pour vous sans y apporter de modification.

Sur une note connexe, je suis légèrement choqué. Heroku n'a toujours pas cette fonctionnalité. J'ai souvent vu Heroku ne pas se déployer à cause de problèmes de son côté.

Merci à Michael Mior pour l’idée d’utiliser -C HEAD pour éviter d'ouvrir un éditeur.

22
Chris Nicola

Heroku a publié un plugin que ce qui est demandé: https://github.com/heroku/heroku-repo

Pour l'installer:

$ heroku plugins:install heroku-repo

Pour forcer une reconstruction:

$ heroku repo:purge_cache -a appname
$ heroku repo:reset -a appname
$ git Push heroku
16
Flimm

Mise à jour: repo heroku: la reconstruction a été supprimée .

Heroku a une API de construction que vous pouvez utiliser, voir: Construction et publication à l'aide de l'API


Vous pouvez utiliser la commande repo: rebuild si le heroku-repo add -sur.

heroku repo:rebuild -a appname

https://github.com/heroku/heroku-repo

15
khamaileon

On dirait que ce n'est pas encore disponible. Cependant, une demande de fonctionnalité doit être ouverte sur le dépôt Heroku github

Il mentionne également "un autre moyen de construire qui ne dépend pas de git Push "

https://github.com/ddollar/heroku-anvil

9
Kostia

Il existe un plugin herok pour cela.

$ heroku plugins:install heroku-releases-retry
Installing plugin heroku-releases-retry... done
$ heroku releases:retry
Retrying v16 on ⬢ murmuring-lowlands-3398... done, v17
3
Matt Joiner