2010-01-19 70 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' 
相關問題