2013-01-23 25 views
7

在一個可以每天創建多個構建版本(發佈候選版本包)的環境中,每月只有一個版本升級到生產版本,我認爲將每個版本存儲在Git中都是浪費的,但應該有一個短期地點,即最後幾個版本已出版。應該使用Git來存儲持續集成構建?

我目前正在將這些發佈到共享目錄。過去我看到IVY用於這種二進制發佈。 Git看起來過於誇張,因爲它的模型永遠不會刪除任何東西。

是否有一種協議的,標準化的方式來管理/發佈這些瞬態構建工件?

+4

你爲什麼要存儲神器?構建可以被重新創建。 –

+0

(無論如何,我的意思是在git中,大多數CI服務器都不會將構建版本保持在可配置的時間範圍內) –

+0

構建可以重新創建,但構建環境有時不能。不管您是否將整個工具鏈保持在修訂版控制之下,您無法確定在大量時間過後可以構建相同的二進制文件。此外,不可能構建完全相同的二進制文件(嵌入式時間戳導致不同的文件校驗和)。這使得第三方難以信任或認證您的軟件,除非他們也從源頭上構建軟件。 –

回答

10

我不會存儲在git的生成工件,而是看,無論是從連續型集成(CI)服務器或專用神器庫如artifactorynexus共享構建構件。總的來說,我發現最好避免所有SCM中的大型二進制文件,因爲你無法區分它們或進行增量更新,所以你會發現你的git repo快速增長,因爲它在每次更改時都存儲完整版本的二進制文件。

大多數持續集成工具(如Jenkins)將能夠歸檔上個月內最後的X個構建工件或所有構建工件。他們也有插件可以幫助支持和自動化推廣你認爲有幫助的構建過程(即Jenkins build promotion)。

通過使用神器庫或CI服務器來管理構建構件也可以通常通過時要自動部署過程,例如,你可以像「getLastSuccesfullBuild」電話這進來非常有用的API訪問文物和'getLastPromotedBuild()'等。

+2

+1 Nexus,Artifactory或Archiva等存儲庫管理器旨在解決此問題。看看他們的功能。我們使用Nexus專業版,使我們能夠「發佈」我們的版本並創建認證工作流程,其中DEV創建構建工件,隨後在通過生產庫之前由Test和QA批准。 –