34 votes

Comment faire pour ne pas restaurer Capistrano en cas d'échec d'une tâche

Nous sommes à l'aide de Capistrano/Webistrano (avec Lee Hambley de railsless-déployer gem) pour pousser notre application PHP sur les serveurs de production. J'ai quelques tâches personnalisées que vous faire au cours de diverses parties du processus de déploiement.

Comme un exemple, j'ai des tâches qui tentent d'arrêter et de redémarrer une jetée solr instance. Cependant, parfois, ce bit échoue lors de la déployer, de sorte que Capistrano annule l'ensemble de déployer et revient à la révision précédente. C'est une douleur. :-)

Je voudrais vous dire, Capistrano d'ignorer le résultat de retour de ces tâches, si elles échouent, Capistrano continue sur son chemin et se termine le déployer de toute façon. Il est très facile pour moi de faire du ssh vers le serveur après le fait et correctement arrêter et redémarrer le solr exemple, plutôt que d'avoir à faire un complet se déployer à nouveau.

Voici les parties pertinentes du script de déploiement:

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

33voto

christophercotton Points 3969

à partir de la Capistrano Tâche docs il est une config que vous pouvez ajouter à si il y a une erreur, pour continuer.

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

Juste ajouter que pour chaque tâche que vous voulez ignorer les erreurs et de continuer. Cependant, la meilleure chose est de voir si vous pouvez comprendre ce qui est à l'origine de l'échec et ont la commande de redémarrage, plus rigoureux, vraiment le redémarrer. Je dis seulement ceci, car lorsque vous essayez de remettre le script de quelqu'un d'autre, ils peuvent ne pas savoir exactement comment savoir si il redémarré correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X