2013-02-03 256 views
0

在我目前的設置中,我的開發服務器有一大堆我和其他用戶推送到的裸露git存儲庫。但是,現在,我想在服務器本身上集成PHPUnit測試。有git的遠程測試存儲庫

我最初的想法是在每個存儲庫中有一個名爲tests的子目錄,然後有類似VisualPHPUnit的東西運行測試,以便通過服務器的「網站」查看結果。但是,看到遠程存儲庫是裸露的,我不能準確地告訴VPHPU去查找測試目錄 - 因爲它們不是真的在那裏。

有沒有更好的做事方式?我想可能有另一個存儲庫包含所有項目的測試,並且只是使其不是光禿禿的 - 但這違背了git標準,可能會破壞一些東西。

回答

1

我想你會更好地設置JenkinsQuickBuild。詹金斯是開源的,而QuickBuild不是。但QuickBuild有一個免費版本,我發現它比前者更可靠。兩者都將允許您簽出源代碼,運行測試併發布結果。從長遠來看,它可以讓您做更多的事情,例如打包您的產品進行部署。

如果您試圖使您的當前想法正常工作,您將需要一個post-receive掛鉤,它將檢查某處的代碼,對結帳運行測試,並將結果發佈到已知位置。不過你需要考慮一些事情。例如,你想測試每個分支嗎?只有一個?接收後的掛鉤會告訴你所有正在更新的分支,所以如果你只想測試master,你可能需要過濾。 Pro Git有關於hooks的一些信息以及如何定製它們。

我會避免使用裸倉庫。你必須處理諸如推入裸露的倉庫之類的事情,這是令人不悅的。我想最終你會真的想要Jenkins或QuickBuild來幫助你。

+0

我很想運行Jenkins,但是它的基於Java的並且重載了沉重 - 對我的VPS不理想。有沒有不會讓我的VPS陷入癱瘓的非java類似於jenkis的應用程序? – n0pe

+0

http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software – michas

+0

我知道一些設法在他們的VPS上使用[BuildBot](http://trac.buildbot.net/)的人,儘管我是不知道我會。你說得對,這些工具往往有點沉重。如果你有一個開源項目,你可以試試[Travis CI](https://travis-ci.org)。他們還有一個名爲[Travis Pro](https://travis-ci.com)的私人項目。我不確定後者的成本是多少......現在可能沒有什麼是他們的測試版了。 – jszakmeister

1

我建議用gerrit來管理你的遠程git倉庫,並設置jenkins以使用gerrit plugin來運行所有的自動測試。

這樣你把你的變化推向gerrit,gerrit會通知jenkins,jenkins對新鮮推送的代碼運行所有測試。現在gerrit開始審查,介紹測試的變化和結果。然後,當jenkins很高興並且變化看起來很健康時,您可以將您的更改合併到另一個開發人員可以從中再次獲取的官方分支。

此過程看起來有點複雜,但它確保只有成功測試的代碼纔會駐留在您的存儲庫中,並且如果您打破任何測試,則可以確定是否破壞了它。 - 這是自動測試的重點。 ;)