2010-12-10 49 views
4

如何配置系統有一個主和多個奴隸,用gmake構建正常的c代碼?主從可以如何訪問工作區?我猜NFS分享是走的路,但如果這是不可能的任何其他選項?哈德遜奴隸,如何訪問工作區

http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds是否存在但無法理解工作區共享是如何處理的?

Rsync?從主:SCM作業 - >完成 - > rsync到所有奴隸 - >建立作業,如果是在奴隸 - > rsync工作區回到主?

任何概念或現實生活解決方案的證明?

回答

1

只有一種做事的方式,其他存在。

工作區在分配到多臺機器時實際上不共享,因爲它們作爲多臺機器中的每一臺的目錄存在。爲了解決項目的協調問題,需要從一個工作區分配到另一個工作區的任何項目都通過SCP複製到中央存儲庫中。

這意味着有時我有一個任務需要等待中央存儲庫中登錄的項目。爲了解決這個問題,我有任務運行一個shell腳本,通過SCP輪詢存儲庫以查找所需的項目,如果五分鐘後項目不可用,則會發生錯誤。

唯一的缺點是您需要傳遞一個參數(內部版本號)以使構建版本保持在同一頁面上,從而防止構建版本拾取先前版本構建的構件。這和你必須設置很多SSH密鑰,以避免在運行SSH腳本時需要傳遞密碼。

就像我說的,不是理想的解決方案,但我發現它比我特定版本的Hudson(和我的SSH服務器集)的ssh工件抓取代碼更穩定。

一個缺點是,大多數Linux機器的SSH服務器似乎確實缺乏性能。像我這樣的解決方案往往會在大約同一時間涌入大量連接的情況下讓SSH服務器癱瘓。如果您發現同樣的情況發生,您可以添加計時器延遲(簡單,不完美的解決方案),或者您可以使用高性能補丁重新構建SSH服務器。有一天,我希望高性能補丁能夠進入SSH服務器基本代碼,只要它們不會對SSH服務器安全產生負面影響。

4

當Hudson在從屬節點上運行構建時,它會從該節點上的源代碼管理中執行檢出。如果要從主節點複製其他文件,或者在構建之後將其他項目複製回主節點,則可以使用Copy to Slave plugin

+2

我有概念組的證明,5個奴隸這樣做只是這一點。 perforce插件將爲每個從設備創建新的工作區並執行初始同步(永久佔用)。之後,每臺機器只會同步自上次構建以來的更改,以使工作空間重新排列。我唯一的問題是,工作空間每隔一段時間都會處於一種不可同步的狀態,我不得不強制對它們進行完全同步。工作得很好,我不需要構建任何文件來複制文件。 – dhable 2010-12-10 21:29:16

+0

有趣的@丹。我正在連接到SVN和Team Server,並且我都設置爲每次都進行完整的結帳。這需要額外幾分鐘,但由於我們的代碼基數相對較小,所以它還沒有出現問題。 – dsolimano 2010-12-11 04:03:10