我必须错过Capistrano的一些东西,因为我刚开始编写capfiles而且我正在查看大量的重复代码。考虑一下这个
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中可能只有一个“部署”任务的定义,而不是每组服务器的重复定义。
有没有办法编写一次任务并动态指定角色?
答案 0 :(得分:2)
查看multistage extension。虽然很容易设置您自己需要的任务,但多级扩展程序将为您完成所有这些任务。
如果您愿意自己动手,请参阅本手册的calling tasks部分。诀窍是你可以从命令行按顺序调用不同的任务。