significado rails nomina jamon golondrinas california capistrano

rails - Cómo hacer que Capistrano NO retroceda si una tarea falla



capistrano rails (1)

Estamos utilizando Capistrano / Webistrano (con la gema de despliegue sin barra de Lee Hambley) para impulsar nuestra aplicación PHP a los servidores de producción. Tengo algunas tareas personalizadas que se ejecutan durante varias partes del proceso de implementación.

Como ejemplo, tengo tareas que intentan detener y reiniciar una instancia de Soldado de amarre. 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, así 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í hay algunas partes relevantes de la secuencia de comandos de implementación:

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


de los documentos de tarea de Capistrano hay una configuración a la que puede agregar si hay un error para continuar.

task :solr_start, :on_error => :continue do # your code here end

Simplemente agregue eso a cada tarea que desee ignorar los errores y continúe. Sin embargo, lo mejor es ver si puede averiguar qué está causando la falla y hacer que el comando de reinicio sea más robusto para realmente reiniciarlo. Solo digo esto, ya que cuando intentas entregar el script a alguien más, es posible que no sepan exactamente cómo decir si se reinició correctamente.