0

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

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

4

1 回答 1

2

看看多级扩展。虽然很容易设置您自己需要的任务,但多级扩展将为您完成所有工作。

如果您想自己做,请参阅手册的调用任务部分。诀窍是您可以从命令行按顺序调用不同的任务。

于 2013-10-03T21:48:36.010 回答