2011-11-22 138 views
3

雖然我們是一個使用SVN進行源代碼管理和Apache Ivy進行依賴管理的Java陣營,但這個問題廣泛適用於任何平臺/語言,SCM和工件存儲庫工具。同步版本控制和工件庫

我的技術主管和我帶領公司邁出了第一步,使用Ivy這樣的依賴管理器來管理我們所有的JAR。我們已經建立了我們稱之爲「Ivy Repo」的地方,這是我們內部(由我們開發)JAR以及常用重用依賴項(Apache JAR,Spring等)的地方。

我們開始遇到問題,其中一個開發商將不得不做出改變我們的內部共享JAR(Commons.jar),然後運行之前的代碼更改的<ivy:publish>已代碼審查,致力於爲SVN和建CI服務器。這種情況發生在開發人員正在研究某個項目中的錯誤修復或新功能時,但需要對Commons.jar等依賴項進行修改才能完成其任務。

因此,我們處於常春藤和SVN不同步的情況。

很明顯,我們可以立即制定一個規則,即在沒有先審查代碼,提交併測試代碼的情況下,不允許任何人發佈。或者,我們可以完全禁止開發者發佈。

在走向任何一條路線(我們傾向於後者)之前,我們想知道其他團隊是否遇到過相同的問題,並採取了哪些解決方案來防止這種情況發生。

也許像Artifactory或SonaType這樣的工具值得研究,但我們都沒有與他們的經驗,它看起來並不像他們支持這些類型的業務規則。

簡而言之:我們正在尋找一種方式,以防止過早JAR出版使出版始終是我們的標準code >>review >>commit >>CI >>deploy週期最後階段。

在此先感謝!

回答

3

Artifactory提供細粒度的permission management,這對控制誰可以部署什麼和在哪裏是有用的;例如,您可以創建一條規則,根據其名稱\路徑(即Commons.jar)拒絕發佈jar文件,並將其應用於除批准該文件的所有用戶以外的所有用戶。

如果您需要更多的靈活性,Artifactory的專業版本也有User Plugins feature,它基本上可以讓您爲Artifactory編寫groovy插件,併爲您提供豐富的上下文和不同操作的鉤子。
此外,Artifactory的properties metadata可讓您使用自定義標籤註釋任何工件和文件夾,這些自定義標籤也可用於不同的條件。

將兩者結合起來讓你的想象力發揮得淋漓盡致。

+0

謝謝noamt - 聽起來像Artifactory是要走的路! – IAmYourFaja