针对不同环境的不同操作

时间:2014-01-29 15:36:55

标签: git capistrano capistrano3

快速Capistrano 3问题。

我正在使用Capistrano将CMS部署到暂存环境,然后再投入生产。

我需要上传一个包含数据库信息的配置文件,其中CMS位于git repo之外。

有两个配置文件staging-config和production-config。

如何让Capistrano根据目标上传文件或执行任务?

task :upload_config do
    on roles(:all) do |host|
        within fetch(:shared_path) do
            upload! 'staging-config.php', "#{fetch :shared_path}/staging-config.php"
        end
    end
end 

1 个答案:

答案 0 :(得分:1)

您可以随时使用if..elseif..end,如下所示:

if fetch(:stage) == :production
...
elsif fetch(:stage) == :staging
...
end

或者,如果您只有暂存和生产:

task :upload_config do
    on roles(:all) do |host|
        within fetch(:shared_path) do
            upload! "#{fetch(:stage).to_s}-config.php", "#{fetch :shared_path}/#{fetch(:stage).to_s}-config.php"
        end
    end
end