【问题标题】:Setting :deploy_to from server config in Capistrano3在 Capistrano3 中从服务器配置设置 :deploy_to
【发布时间】:2015-03-30 18:00:03
【问题描述】:

在我的 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”?如果可以,你会怎么做?

【问题讨论】:

    标签: deployment capistrano capistrano3


    【解决方案1】:

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

    引用自Github issue

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

    您通过 server() 在主机对象中设置的变量 命令属于单个主机,其中一些,用户,角色等 有特殊意义。有关更多信息,请参阅 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) 时,您使用来自的值设置()它 host.someproperty 但我很确定这会令人兴奋和 有趣的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-15
      • 2015-10-10
      • 1970-01-01
      • 2016-05-14
      • 2012-11-10
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多