Capistrano3 - 在部署时删除失败的版本:失败

时间:2016-11-03 21:24:29

标签: capistrano

我正在使用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'

1 个答案:

答案 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在处理回滚和失败方面有更多的讨论。