2013-10-17 30 views
2

如果我理解正確,capistrano v3的標準git部署實現將在所有角色上部署相同的存儲庫。我有一個更困難的應用程序,它有幾種類型的服務器,每種類型都有自己的代碼庫和自己的存儲庫。我的數據庫服務器例如不需要部署任何代碼。capistrano(v3)在所有角色上部署相同的代碼

我該如何解決capistrano v3中的這個問題?

我應該爲每個角色編寫自己的部署任務嗎?

回答

0

我該如何解決capistrano v3中的這個問題?

所有服務器都會獲取代碼,因爲在某些環境中需要執行某些操作的代碼。例如,在典型的設置中,web服務器需要您的靜態資產,app服務器需要您的代碼來爲應用程序提供服務,而db服務器需要您的代碼來運行遷移。

如果在您的環境中並非如此,並且您不希望某些角色的服務器上的代碼,則可以輕鬆發送拉取請求以將Capl2中的no_release功能添加到Cap3中。

您當然可以將.rake文件從Gem中取出,然後將這些文件加載​​到您的Capfile文件中,這是一種非常有效的使用該工具的方法,並根據您自己的需要進行修改。

一般的方法是,如果您不需要DB服務器上的代碼,例如爲什麼它在您的部署文件中列出?

+0

數據庫服務器是一個不好的例子,但我有一些其他服務器有另一個角色,並從另一個git存儲庫中獲取他們的代碼。你會如何解決這個問題? – Karel

+0

該功能針對v3.1。與此同時,查看問題跟蹤器(作爲此帖子的結果),您可以帶上具有待定代碼的(官方)分支。 –