Recompila babosa Heroku sin cambio de empuje o configuración
heroku panel (9)
Hay un complemento heroku para esto.
$ heroku plugins:install heroku-releases-retry
Installing plugin heroku-releases-retry... done
$ heroku releases:retry
Retrying v16 on ⬢ murmuring-lowlands-3398... done, v17
Me pregunto si hay una manera de obligar a Heroku a recompilar el slug sin presionar nuevas confirmaciones y / o actualizar las variables de configuración.
¿Por qué querría hacer esto ?:
Estoy usando la pila Cedar en Heroku para una aplicación Rails 3.2, y estoy teniendo problemas con los rake assets:precompile
falla de la tarea de rake assets:precompile
(solo durante la compilación --- luego funciona bien con una heroku run
). Sospecho que esto se debe a que ciertas variables de entorno no están disponibles durante el tiempo de compilación de slug, y creo que los heroku labs:enable user_env_compile
la característica experimental heroku labs:enable user_env_compile
lo resolverá.
Sin embargo, con la función user_env_compile
activada, los cambios de configuración no desencadenan una recompilación del slug, y mi código no ha cambiado, por lo que no tengo ningún nuevo commit para enviar.
Por supuesto, podría presionar un commit "ficticio" con un cambio trivial, que es probablemente la respuesta más simple --- pero me pregunto si hay un comando heroku que me permita recompilar directamente el slug.
¡Gracias!
Heroku ha lanzado un complemento que pide: https://github.com/heroku/heroku-repo
Para instalarlo:
$ heroku plugins:install heroku-repo
Para forzar una reconstrucción:
$ heroku repo:purge_cache -a appname
$ heroku repo:reset -a appname
$ git push heroku
La compilación Slug se invoca con un gancho pre-recepción de git, por lo que la única forma de volver a compilar es presionar un nuevo compromiso.
Para más información, consulte este artículo sobre Heroku para el compilador slug . Discutió el uso del gancho de pre-recepción para invocar el proceso de compilación slug bajo el encabezado Compilación.
La solución más simple por el momento es presionar una confirmación vacía .
git commit --allow-empty -m "empty commit"
git push heroku master
Mi enfoque general es hacer:
git commit --amend -C HEAD
git push heroku:master -f
No estoy seguro de hacer esto en producción sin estar seguro, ya que técnicamente reescribe el último compromiso, pero no debería causar ningún problema en teoría. Sin embargo, está perfectamente bien para cuando estás probando cosas en etapas.
Como una ventaja adicional ya que la mayoría de las personas tiene problemas al usar Vim para editar los mensajes de confirmación, SHIFT-ZZ
guardará rápidamente y saldrá del mensaje de confirmación sin realizar ningún cambio en él.
En una nota relacionada, estoy ligeramente sorprendido Heroku todavía no tiene esta característica. A menudo he visto a Heroku no desplegar debido a problemas de su parte.
Gracias a Michael Mior por la idea de usar -C HEAD
para evitar abrir un editor.
Parece que esto aún no está disponible. Sin embargo, se ha abierto una solicitud de función en el repositorio heroku github
También menciona "una forma alternativa de construir que no depende de git push
"
Retire la rama y vuelva a empujarla. No es necesario usar un complemento.
git push heroku :master
git push heroku master
git push --force
debería funcionar :)
Actualización: repo de heroku: la reconstrucción se ha removed .
Heroku tiene una API de compilación que puedes usar, ver: Crear y liberar usando la API
Puede usar el comando repo: rebuild si el complemento heroku-repo .
heroku repo:rebuild -a appname