Estamos usando Capistrano/Webistrano (con la gema de despliegue sin barra de Lee Hambley) para llevar nuestra aplicación PHP a servidores de producción. Tengo algunas tareas personalizadas que se ejecutan durante varias partes del proceso de implementación.Cómo hacer que Capistrano NO retroceda si falla una tarea
Como ejemplo, tengo tareas que intentan detener y reiniciar una instancia de solución de embarcadero. Sin embargo, a veces este bit falla durante el despliegue, por lo que Capistrano retrotrae todo el despliegue y vuelve a la revisión anterior. Esto es un dolor :-)
Me gustaría decirle a Capistrano que ignore el resultado de estas tareas, por lo que si fallan, Capistrano continúa su camino y termina el despliegue de todos modos. Es muy fácil para mí enviar ssh al servidor después del hecho y matar y reiniciar correctamente la instancia de Solr, en lugar de tener que hacer una implementación completa nuevamente.
Aquí es algunas partes pertinentes de la secuencia de comandos de despliegue:
before "deploy:symlink", :solr_kill
after "deploy:symlink", :solr_start, :solr_index
task :solr_kill do
run "cd #{current_path}/Base ; #{sudo} phing solr-kill"
end
task :solr_start do
run "cd #{current_path}/Base ; #{sudo} phing solr-start"
run "sleep 10"
end
task :solr_index do
run "#{sudo} #{current_path}/Base/Bin/app.php cron run solr_index_cron"
end
Gracias, Chris. Mis tareas son para siempre un trabajo en progreso, pero esto ayudará hasta que tenga la oportunidad de mejorarlas lentamente para hacer un mejor manejo de errores. – TravellingGuy
¿Hay alguna otra forma de hacer esto? ¿Qué sucede si quiere detenerse en un error e inspeccionar el estado? –
Una forma de inspeccionar el estado: ejecutar 'cap -d deploy'. El -d es para "depurar", lo que significa que Capistrano hará una pausa antes de ejecutar cada tarea y le pedirá que continúe o aborte. Cuando llegue al comando que desea depurar simplemente no responda el mensaje, abra una nueva pestaña/ventana de terminal y SSH a su servidor de implementación y realice la depuración :) – Bendihossan