我们正在使用Capistrano / Webistrano(与Lee Hambley的无轨部署宝石)将我们的PHP应用程序推送到生产服务器。我有一些自定义任务可以在部署过程的各个部分运行。
例如,我有一些尝试停止并重新启动jetty solr实例的任务。但是,有时在部署期间这个位失败,因此Capistrano回滚整个部署并恢复到之前的版本。这是一种痛苦。 : - )
我想告诉Capistrano忽略这些任务的返回结果,所以如果他们失败了,Capistrano就会继续前进并完成部署。我很容易在事后ssh到服务器并正确地杀死并重新启动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
答案 0 :(得分:33)
如果有错误,可以添加一个配置,以便继续。
task :solr_start, :on_error => :continue do
# your code here
end
只需将其添加到要忽略错误的每个任务,然后继续。尽管如此,最好的办法是看看你是否可以弄清楚导致失败的原因,并让restart命令更加强大,以便真正重新启动它。我只说这个,因为当你试图将脚本交给其他人时,他们可能不知道如何判断它是否正确重启。