gpt4 book ai didi

capistrano - 如果任务失败,如何使Capistrano不回滚

转载 作者:行者123 更新时间:2023-12-03 08:30:14 25 4
gpt4 key购买 nike

我们正在使用Capistrano / Webistrano(与Lee Hambley的railsless-deploy gem配合使用)将PHP应用程序推送到生产服务器。我有一些自定义任务,这些任务会在部署过程的各个部分运行。

例如,我有一些尝试停止并重新启动 jetty Solr实例的任务。但是,有时该位在部署过程中会失败,因此Capistrano会回滚整个部署,并还原为先前的版本。真痛苦:-)

我想告诉Capistrano忽略这些任务的返回结果,因此,如果它们失败,Capistrano会继续进行并完成部署。事实发生后,我很容易将ssh 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

最佳答案

如果存在错误,可以从Capistrano Task docs添加一个配置以继续。

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

只需将其添加到要忽略错误并继续的每个任务中即可。但是,最好的办法是看看您是否可以找出导致故障的原因,并让重启命令更可靠地真正重启它。我只是这么说,因为当您尝试将脚本移交给其他人时,他们可能不知道如何判断脚本是否正确重启。

关于capistrano - 如果任务失败,如何使Capistrano不回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4799197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com