我一定错过了 Capistrano 的一些东西,因为我刚刚开始编写 capfile,而且我正在查看大量重复的代码。考虑这个
role :dev, "dev1", "dev2"
role :prod, "prod1", "prod2"
desc "Deploy the app in dev"
task :deploy_dev, :roles => :dev do
run "sudo install-stuff"
end
desc "Deploy the app in prod"
task :deploy_prod, :roles => :prod do
run "sudo install-stuff"
end
IMO 想要在 dev 或 prod 中运行完全相同的任务是完全合理的,但据我所知,Capistrano 会让我编写 2 个任务来指定不同的节点......
好像您可以参考 CLI 上的角色,例如
cap deploy dev
cap deploy prod
在 capfile 中可能有一个“部署”任务的定义,而不是每组服务器都有一个重复的定义。
有没有办法编写一次任务并动态指定角色?