Capistrano为每个角色重复任务

时间:2013-10-03 21:21:51

标签: capistrano code-duplication

我必须错过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中可能只有一个“部署”任务的定义,而不是每组服务器的重复定义。

有没有办法编写一次任务并动态指定角色?

1 个答案:

答案 0 :(得分:2)

查看multistage extension。虽然很容易设置您自己需要的任务,但多级扩展程序将为您完成所有这些任务。

如果您愿意自己动手​​,请参阅本手册的calling tasks部分。诀窍是你可以从命令行按顺序调用不同的任务。