我正在尝试使用Capistrano部署到两个不同的角色,两者都使用Bundler,但Bundler命令和标志将不同。是否可以设置特定于角色的变量?要么像:
set :bundle_flags, "--deployment --quiet", :role => "web"
或:
role :web do
set :bundler_cmd, "--deployment --quiet"
end
当然,这两个选项都不起作用。有没有办法实现这个,或类似的东西?
答案 0 :(得分:1)
每个角色无法使用自定义变量值。
您可以使用capistrano-ext中的多级扩展程序为您的两个不同角色设置不同的阶段。
如果不同的阶段对您的部署没有意义,您可以编写自己的bundle:install任务并根据角色运行不同的命令
run "bundle --deployment --quiet", :roles => :web
run "bundle --deployment", :roles => :app
如下面的评论所述,如果角色没有定义服务器,这种方法会引发错误。它还将串行运行每个命令。要解决这两个问题,请使用并行帮助程序。
parallel do |session|
session.when 'in?(:web)', "bundle --deployment --quiet"
session.when 'in?(:app)', "bundle --deployment"
end