Capistrano部署到同一服务器上的不同路径

我正在尝试使用capistrano部署我的应用程序。 但我想将我的应用程序部署到同一服务器的多个路径。例如,如果第一次运行我想将它部署到下面的路径

set :deploy_to, '/home/a/some_path/ 

一旦完成第一个,它应该运行第二个路径

  set :deploy_to, '/home/b/some_path/ 

等等。 有什么建议我怎样才能做到这一点? 现在,我的单路径部署路径正在运行AOK。

在您的配置文件中:

 set :deploy_to, ENV["DEPLOY_PATH"] 

然后,要部署,请运行设置DEPLOY_PATH变量的命令:

 DEPLOY_PATH="my/path" cap production deploy 

使用capistrano 3.8.2,我在deploy.rb中monkeypatched lib / capistrano / dsl / paths.rb,但后来发现我需要更多的工作才能在不同的部署用户处设置git包装器。 结果如下: https : //gist.github.com/mcr/49e8c7034658120013c1fe49da77c2ac

但是,我将离开内容的精髓:

 module Capistrano module DSL module Paths def deploy_to dir = @host.properties.fetch(:deploy_to) || fetch(:deploy_to) puts "For #{@host.hostname} deploy_to: #{dir}" dir end end end end 

(你可以把它放出来,把它缩短成一行,但我发现额外的调试很有用)

然后一个做:

 server "server.client1.example.com", user: "client1", roles: %w{app db web}, deploy_to: '/client1/app/foobar' server "server.client2.example.com", user: "client2", roles: %w{app db web}, deploy_to: '/client2/app/foobar' 

其中server.client1.example.com和server.client2.example.com是同一服务器的CNAME或重复A / AAAA记录。 这也隔离了每个客户端到DNS的位置的问题。