Capistrano多次调用部署?

时间:2015-04-28 08:47:28

标签: capistrano capistrano3

我们正在开发一个允许我们使用capistrano同时部署多个项目的系统。我们有3个系统(正面,计费,应用程序),它们都有一个单独的代码库,并分多个阶段部署在不同的服务器上。

使用capistrano_multiconfig创建一个具有多个配置的capistrano repo,就像魅力一样。我可以单独运行每个命令,并且它们都可以在正确的阶段向正确的服务器部署。

现在我想添加一个自定义任务,使用一个命令一次部署所有已配置的项目。我已粘贴下面的命令代码。

set :projects, ['front', 'billing', 'app']

namespace :deploy do
    desc 'Deploy all'
    task :all do 
        set :env, ask('To what environment do you want to deploy?', 'staging');
        run_locally do
            fetch(:projects).each { |project| 
                info "Now deploying #{project} to #{fetch(:env)}" 
                invoke "#{project}:#{fetch(:env)}"
                invoke "deploy"
            }
        end
    end
end

问题是上面的代码只部署了第一个项目,info命令对.each循环的所有迭代执行,但是deploy命令的调用仅针对第一个项目运行,之后是以下两个调用电话只是无所事事。

有人有想法吗?

1 个答案:

答案 0 :(得分:3)

你应该重新安排任务

耙::任务[ “部署”]。重新启用