我想运行 cap development deploy:setup 和 cap development deploy 来为我的 rails 应用程序设置开发环境。为了做到这一点,我将不得不从远程机器上删除项目文件夹,有没有办法使用 cap 以某种方式自动执行此操作。
我基本上想在进行完整部署之前删除远程机器中的 app 文件夹。
我想运行 cap development deploy:setup 和 cap development deploy 来为我的 rails 应用程序设置开发环境。为了做到这一点,我将不得不从远程机器上删除项目文件夹,有没有办法使用 cap 以某种方式自动执行此操作。
我基本上想在进行完整部署之前删除远程机器中的 app 文件夹。
before 'deploy:setup', 'removecode'
task :removecode do
run "rm -rf <path>", :shell => fetch(:rvm_shell)
end
将此代码添加到您的 deploy.rb 文件中,这将在 deploy:setup 之前调用,这样您就可以创建任务并执行您想做的任何事情
Capistrano 应用程序文件夹的结构如下:
releases
- 包含迄今为止进行的每个部署的单独文件夹(使用提交 ID 或时间戳命名)current
- 链接到最新的部署文件夹下releases
shared
- 共享日志、gem 文件以及tmp
部署之间使用的文件现在您真的要清理整个应用程序文件夹吗?这可能很危险,因为您会丢失日志。
current
只是一个符号链接,它仅指向最新版本。
如果您想清理旧版本,请查看此答案。您可以设置keep_releases
为 1。
如果您还想删除共享文件夹,那么您必须编写自己的 Capistrano 挂钩,如 @Strik3r 所述。