2010-01-23 8 views
123

Normalmente, cuando uso capistrano, voy a ir y elimino manualmente versiones antiguas de una aplicación desplegada. Entiendo que puede ejecutar cap deploy:cleanup pero eso aún deja 5 lanzamientos. ¿Es este su propósito? ¿Hay alguna otra manera de limpiar las versiones anteriores a solo 1 despliegue anterior?Capistrano: limpiar versiones anteriores

+0

es siempre una buena idea tener algunas versiones anteriores, a continuación, si la última implementar contiene un gran error puede revertir rápidamente con Capistrano (tapa de despliegue: rollback) a la lanzamiento anterior hasta que lo arregles. – damoiser

Respuesta

150

Puede usar la variable :keep_releases para anular el valor predeterminado 5. Verifique this.

+0

Genial. Eso es exactamente lo que estaba buscando. Gracias. – Josh

+4

¡De nada! ¡Podrías haber aceptado la respuesta! :-) – jcrossley3

+2

@Josh, definitivamente, acepte esta respuesta si solucionó su problema. Ambos obtienen puntos de representante de esta manera. –

126

Usted puede hacer esto de forma automática mediante el establecimiento de esto en su deploy.rb

set :keep_releases, 1 
after "deploy:update", "deploy:cleanup" 

En el pasado (no sé exactamente qué versión) esta devolución de llamada era el valor por defecto, pero más tarde el desarrollador decidí dejar al usuario a decidir. En capistrano 3, se volvió a agregar al flujo de despliegue predeterminado.

+1

Gracias, Diego. Su respuesta funciona correctamente en Capistrano v2.14.1. – scarver2

+1

Gracias @diego esto realmente ayudó! – gouravtiwari21

+1

Parece que [Capistrano 3 llama a 'implementar: limpieza' como parte del flujo de implementación] (https://github.com/capistrano/capistrano/blob/690afc0c5c3c43d2920b0bfdeb9323c286b12106/lib/capistrano/tasks/deploy.rake#L23). – Dennis

38

Si desea eliminar todas las emisiones, excepto el último 3, por ejemplo, puede ejecutar:

cap deploy:cleanup -s keep_releases=3 
+3

No funciona. 'optionParser :: InvalidOption: opción no válida: s' – Snowman

0

que tenía un problema similar. Quería mantener los 5 lanzamientos para implementaciones normales, pero es necesario para ciertas situaciones para poder eliminar todas las versiones anteriores.

Pude hacer esto con una tarea personalizada. Cree un archivo lib/capistrano/tasks/cleanup.rake y agregue el siguiente código.

desc "Remove all but the last release" 
task :cleanup_all do 
    set :keep_releases, 1 
    invoke "deploy:cleanup" 
end 

Para ejecutar el uso bundle exec cap staging cleanup_all o cap staging cleanup_all

Cuestiones relacionadas