我们正在开发一个允许我们使用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命令的调用仅针对第一个项目运行,之后是以下两个调用电话只是无所事事。
有人有想法吗?
答案 0 :(得分:3)
你应该重新安排任务
耙::任务[ “部署”]。重新启用