Capistrano v2有两个有用的任务:cap deploy:update_code
将完全部署到新的releases/
目录,但不会更改current
符号链接或启动/重启服务器(所以服务器继续运行当前版本而不会中断)。并且cap deploy:update
做了同样的事情并且更改了current
符号链接,但没有启动/重启服务器。这些对于解决问题很有帮助,例如:在进行实际部署之前,使用资产编译。
那两个"更新"任务在Capistrano v3中消失了。是否有相同的方法在不更改current
符号链接或重新启动服务器的情况下进行完全部署?
答案 0 :(得分:2)
自定义任务列表应该这样做:
task :deploy_without_symlink do
set(:deploying, true)
%w{ starting started
updating updated }.each do |task|
invoke "deploy:#{task}"
end
end
您可以在此处查看代码:https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/framework.rake#L58以查看部署触发器的内容。每个https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/deploy.rake#L38的发布任务是更改符号链接的内容。因此,通过以后省略所有内容,您就可以获得所需内容。