34
我们正在使用Capistrano/Webistrano(与Lee Hambley的railsless-deploy gem)将我们的PHP应用程序推送到生产服务器。我有一些自定义任务在部署过程的各个部分中运行。如何让Capistrano在任务失败时不会回滚
作为一个例子,我有任务试图停止并重新启动jetty solr实例。但是,有时候在部署过程中这一点会失败,因此Capistrano将回滚整个部署并恢复到之前的修订版本。这是一个痛苦。 :-)
我想告诉Capistrano忽略这些任务的返回结果,所以如果它们失败了,Capistrano会继续完成部署任务。事后处理服务器很容易,并且正确地终止并重新启动solr实例,而不必再次执行完整的部署。
下面是部署脚本的一些相关部分:
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
谢谢,克里斯。我的任务永远是一项正在进行的工作,但这将有所帮助,直到我有机会慢慢改进它们以更好地处理错误。 – TravellingGuy 2011-02-08 00:10:53