设置:Capistrano3中服务器配置的deploy_to

时间:2015-03-30 18:00:03

标签: deployment capistrano capistrano3

在我的Capistrano 3部署中,我想设置set :deploy_to, -> { "/srv/www/#{fetch(:application)}" },以便:deploy_to对于它部署的每个服务器都不同。

在我的staging.rb文件中,我有:

server 'dev.myserver.com', user: 'deploy', roles: %w{web app db}, install_path: 'mycustom/path'
server 'dev.myserver2.com', user: 'deploy', roles: %w{web app db}, install_path: 'mycustom/other/path'

我的问题是:我可以在:deploy_to中使用我定义的“install_path”吗?如果可能的话,你会怎么做?

1 个答案:

答案 0 :(得分:3)

最后,在环顾四周后,我遇到了Capistrano的一位开发人员的问题,特别指出无法完成

来自Github issue

的引用
  

不可能,抱歉。 fetch()(广泛记载)读取值   由set()设置,使用set()和fetch()超过常规的唯一原因   ruby变量是在插件和插件之间提供一致的API   扩展,因为set()可以在以后解析Proc。

     

您通过服务器()在主机对象中设置的变量   命令属于单个主机,其中一些主机,用户,角色等   有特殊的意义。有关更多信息,请参阅   https://github.com/capistrano/sshkit/blob/master/EXAMPLES.md#do-something-different-on-one-host-or-another-depending-on-a-host-property

     

如果您特别需要部署到每个目录上的不同目录   机器你可能不应该使用内置任务(他们   不适合你的需要),而是从Gem复制deploy.rake   进入您自己的项目,并根据需要进行修改。在这种情况下   可能是不采取fetch(:deploy_to),而是从主机读取   属性。

     

在做任何依赖之前,你可以尝试做一些事情   在调用fetch(:deploy_to)时,使用from中的值设置()   host.someproperty但是我很确定这会让人兴奋而精彩   有趣的方式。