2012-04-16 81 views
3

有沒有辦法讓Jenkins尋找SVN項目所有分支的變化,就像Git一樣?Jenkins - 觀看SVN分支

Apache Pig Piggybank是一組由社區貢獻的類,並將特殊版本的Apache Pig添加到exttesion中。豬本身是通過Maven發佈的,因此獲得它的特定版本從來都不是問題。另一方面Piggybank沒有版本,但是每個版本的Pig都有分支。

我想讓Jenkins觀看,然後構建Pig SVN存儲庫中的所有分支。我真的不必關注Piggybank的新版本,併爲每個分支添加Jenkins作業。

回答

1

您可以將多個存儲庫位置添加到單個項目,並將它們簽出到不同的目錄。你仍然需要手動添加所有的分支。

2

這裏是沿@Lars的線條一些闡述回答:

創建觸發器的工作(我們稱之爲觸發),將每個分支簽入其工作區,不同的目錄(順便說一下,你可能在--depth=empty選項中手動在工作區中創建這些目錄,然後Subversion插件仍然會檢測到更改,但如果您有很多分支,則不會簽出節省空間的代碼)。

然後,您可以使用SNV_REVISION_n(其中n爲1,2等;見Subversion Plugin Documentation)的腳本觸發調用作爲構建步驟來檢查哪個部門(或分公司)的確發生了變化(你需要存儲結果,當然,要在下一個觸發器構建中使用)。

然後,您只創建一個將分支名稱作爲參數的作業(我們稱之爲工作人員)。 觸發器將調用工作人員通過具有wget或curl的http使用適當的參數(例如分支名稱)。

或者,你可以爲每個分支觸發作業,並使用Parameterized Trigger Plugin調用工人。缺點是你需要爲每個分支創建一個觸發器,你會有更多的SVN輪詢(除非你使用SVN push)。在另一方面,你將不再需要編寫
檢查哪個分支已經改變了一個腳本,您可以使用​​從觸發傳播變更到工人(也只有在改變相關的分支)。

工作人員將手動更新/檢出作爲參數傳遞給它的分支(svn co等)並構建。

這樣,你只有一個工作,做實際繁重(這意味着更容易維護,少臭蟲等)

我聘請我們的編譯系統這種方法。由於我們一次沒有超過2個活動分支,因此我使用每分支觸發方式。