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!
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.
La solution la plus simple pour l'instant consiste à envoyer un commit vide .
git commit --allow-empty -m "empty commit"
git Push heroku master
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.
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
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
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
"
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