我正在尝试使用capistrano部署我的应用程序。但我想将我的应用程序部署到同一服务器的多个路径。例如,如果第一次运行我想将它部署到路径下面
set :deploy_to, '/home/a/some_path/
完成第一个后,它应该运行第二个路径
set :deploy_to, '/home/b/some_path/
等等。有什么建议我怎样才能做到这一点?现在我的单路径部署路径正在运行AOK。
答案 0 :(得分:3)
在您的配置文件中:
set :deploy_to, ENV["DEPLOY_PATH"]
然后,要部署,请运行设置DEPLOY_PATH
变量的命令:
DEPLOY_PATH="my/path" cap production deploy
答案 1 :(得分:0)
使用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的位置的问题。