Vuelva a implementar la aplicación Heroku sin cambios de código

81

Me gustaría implementar una aplicación Heroku que se hará idealmente usando git push -u heroku master. Sin embargo, esto solo funcionará si hay confirmaciones pendientes para enviar al maestro.

¿Cómo puedo volver a implementar la aplicación si no hay nada que impulsar? Intenté git push -u heroku master -fy sigo obteniendo lo mismo a continuación

Branch master set up to track remote branch master from heroku.
Everything up-to-date

PD: también quiero conservar la aplicación existente, lo que significa que no puedo hacer uso de esta respuesta https://stackoverflow.com/a/22043184/968442

nehem
fuente
3
Esto suena como un problema XY . ¿Qué espera lograr al volver a implementar el mismo código?
Chris
1
Un caso en el que cambié los pocos configvars, que merece una redistribución pero no se confirma
nehem
1
Establecer una variable de configuración hace que se reinicie su aplicación. Debería surtir efecto sin necesidad de volver a implementarlo. ¿Puedes ser mas específico?
Chris
2
Desafortunadamente, el configvar que eliminé fue DISABLE_COLLECTSTATIC=1, que se supone que invoca otro comando de Django manage.py collectstaticque está conectado a la lógica de implementación de heroku.
nehem

Respuestas:

131

Normalmente, la configuración de una var de configuración hace que su aplicación se reinicie. En la mayoría de las situaciones, no debería ser necesario volver a implementar después de hacer esto.

Si realmente necesita activar una nueva implementación, puede agregar una nueva confirmación vacía, luego presione a Heroku nuevamente:

git commit --allow-empty -m "Trigger Heroku deploy after enabling collectstatic"
git push heroku master

La nueva confirmación vacía es una confirmación regular. Tiene un hash, un autor, una marca de tiempo, etc. Tendrá el mismo árbol que su padre. Esto debería hacer que Heroku compile su aplicación slug nuevamente usando el mismo código que la confirmación anterior.

Es un poco incómodo, pero funciona.

Chris
fuente
Suena bastante justo y hace el trabajo. Ahora tengo la tentación de hacer una copia de seguridad / restaurar el repositorio ( .git) para ocultar esta confirmación de github.
nehem
@itsneo, no me molestaría. Es una confirmación fea, pero si sigues escribiendo código además de la confirmación anterior, tendrás que forzar el envío a Heroku la próxima vez. No es un gran hábito, aunque a veces puede ser necesario…
Chris
Incluso con lo git commit --allow-emptyque estoy recibiendo Everything up-to-datede Heroku ...
Benny Neugebauer
@BennyNeugebauer, por favor mire su git log. ¿Creó con éxito una nueva confirmación antes de presionar?
Chris
4
¡Ah, veo el problema! Estaba en una sucursal local diferente (a master). Así que tuve que ejecutar: git push -f heroku the_branch_i_changed:master.
Benny Neugebauer
20

¡También puedes hacerlo desde la interfaz de usuario!

  1. Inicie sesión en su Herokutablero y vaya a la deploysección
  2. Manual deployOpción de buscar

¡Pulsa el Deploy Branchbotón!

ingrese la descripción de la imagen aquí

Hardik Raval
fuente
1
Vale la pena señalar que debe tener su aplicación conectada a GitHub para que esta opción esté disponible. Si está utilizando el método de implementación de Heroku Git sin haber conectado la aplicación a su repositorio de GitHub, no es inmediatamente obvio cómo implementarlo manualmente.
Derek
11

Ahora también hay un complemento para la línea de comandos de Heroku que le permite volver a lanzar el slug implementado más recientemente.

Ver https://www.npmjs.com/package/heroku-releases-retry

Ricardo
fuente
Al principio pensé que esta era la solución, pero en realidad solo se vuelve a implementar pero no se reconstruye. Pero también hay una manera de reconstruir sin manchar su historial de Git presionando una nueva confirmación: stackoverflow.com/q/9713183/322863
aef
2

Puedes correr heroku restart --app app_namey listo.

Leandro
fuente
2
Esto no reconstruye la aplicación, solo la reinicia
PanMan
@PanMan La pregunta dice "¿Cómo puedo volver a implementar la aplicación si no hay nada que impulsar?". No es pedir que la aplicación se reconstruya sino que se reinicie, y dado que no hubo cambios, no veo por qué querrías hacerlo de todos modos.
Leandro
Dice claramente "volver a implementar", no "reiniciar". Yo, por ejemplo, necesito volver a implementar (no reiniciar), porque estoy tratando de Dockerizar mi aplicación con Heroku, y mientras estoy depurando, no quiero contaminar potencialmente mi árbol git. Así es como terminé en esta pregunta SO.
Mike K hace