【问题标题】:How to set conditional variables in capistrano's deploy.rb如何在 capistrano 的 deploy.rb 中设置条件变量
【发布时间】:2012-04-03 15:32:04
【问题描述】:

来自 deploy.rb 的片段

task :prod1 do
  set :deploy_to, "/home/project/src/prod1"
end

task :prod2 do
  set :deploy_to, "/home/project/src/prod2"
end

我有 2 个类似上述的任务。现在,我不想手动运行“cap prod1 deploy”或“cap prod2 deploy”,而是想创建一个任务“prod”,根据服务器上是否存在文件来设置所需的“deploy_to”。

类似:

task :prod do
  if (A_FILE_IN_SERVER_EXISTS)
    set :deploy_to, "/home/project/src/prod2"
  else 
    set :deploy_to, "/home/project/src/prod1"
end

我该怎么做?

【问题讨论】:

    标签: capistrano


    【解决方案1】:

    你可以这样做:

    task :set_deploy_to_location do
      if capture("[ -f /etc/passwd2 ] && echo '1' || echo '0'").strip == '1'
        set :deploy_to, "/home/project/src/prod2"
      else
        set :deploy_to, "/home/project/src/prod1"
      end
      logger.info "set deploy_to = #{deploy_to}"    
    end
    

    这将满足您的需求。您可以像这样使用 before 和 after 挂钩来挂钩此方法:

    before :deploy, :set_deploy_to_location
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2013-12-18
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多