2010-01-19 60 views
3

我试图设置多个角色,一个为活,另一个为开发。他们看起来像这样:部署到只有一个角色/服务器与capistrano

role :live, "example.com" 
role :dev, "dev.example.com" 

但是,当我运行cap deploy时,它会为两台服务器执行。我已经尝试了以下内容,并始终在两者上执行。

cap deploy live 
cap ROLE=live deploy 

我在想什么?我知道我可以编写一个只响应一个角色的自定义任务,但我不想写一大堆任务只是为了让其响应某个角色。谢谢!

+0

以下所有的答案被混淆/不正确。角色不作为过滤器;而是指示capistrano运行该角色的所有任务。请参阅https://groups.google.com/forum/#!topic/capistrano/4gTyvcAtyAg – steakchaser 2013-09-27 22:51:42

回答

3

你可以做这样的事情:

​​

然后使用:

cap dev deploy 
cap prod deploy 
+0

非常酷的主意! – 2010-07-24 21:01:32

12

Capistrano的多级绝对是解决你张贴部署到环境中的例子。关于部署到角色或服务器的问题,Capistrano也提供了命令行解决方案。

部署到一个角色(通知ROLES是复数):

cap ROLES=web deploy 

要部署到多个角色:

cap ROLES=app,web deploy 

要部署到特定服务器(通知HOSTS是复数):

cap HOSTS=web1.myserver.com deploy 

要部署到多个服务器:

cap HOSTS=web1.myserver.com,web2.myserver.com deploy 

部署到服务器(S)与角色(S):

cap HOSTS=web1.myserver.com ROLES=db deploy 
2

只要再一个提示:如果您使用多阶段记得把角色常常之前cap命令。

ROLES=web cap production deploy 

或环境后

cap production ROLES=web deploy 

如果你把作为第一个参数,多阶段将把它作为艺名,并替换默认的:

cap ROLES=web production deploy 

* [...] executing `dev' 
* [...] executing `production' 
相关问题