我正在使用Capistrano 3.如何在部署时删除失败的版本:在没有编写自己的任务的情况下失败?关键是失败的版本保留在版本目录中,并且我不小心通过键入cap deploy:rollback
回滚到损坏的版本
UPD:
目前我还在使用此任务,但仍在寻找更好的解决方案。
namespace :deploy do
desc 'Delete failed release'
task :rm_failed do
on roles(:all) do
execute(:rm, "-rf #{release_path}")
end
end
end
after 'deploy:failed', 'deploy:rm_failed'
答案 0 :(得分:0)
我对Capistrano的有限经验表明,没有内置机制来执行您想要的操作。编写使用deploy:failed触发的任务是处理这种情况的正确方法,因为它可以是特定于应用程序的。
解决部署潜力的更好解决方案:部署后清除失败:符号链接:发布 -
namespace :deploy do
desc 'Delete failed release'
task :rm_failed do
on roles(:web) do
if test "[ -d #{current_path} ]"
current_release = capture(:readlink, current_path).to_s
if current_release != release_path.to_s
execute :rm, "-rf #{release_path}"
end
end
end
end
end
after 'deploy:failed', 'deploy:rm_failed'
Capistrano page on rollbacks在处理回滚和失败方面有更多的讨论。