Java世界里,一個(gè)流行的方案是Sonatype Nexus。Nexus并不只限于Java工件,例Jar或者Ear.,而且還可以存放像RPM這樣的操作系統(tǒng)工件、JavaScript開發(fā)工件等。
亞馬遜S3是一個(gè)可以用來存儲二進(jìn)制工件的鍵值數(shù)據(jù)庫。一些構(gòu)建系統(tǒng),比如Atlassian Bamboo,可以使用亞馬遜S3來存儲工件。S3協(xié)議是開放的,也有可以部署在內(nèi)部網(wǎng)絡(luò)的開源實(shí)現(xiàn)。一個(gè)可選方案是Ceph分布式文件系統(tǒng),它提供了兼容S3的對象存儲。
接下來我們要談到的包管理器,本質(zhì)上也是一個(gè)工件庫。
包管理器
開發(fā)中經(jīng)常使用的各種Linux服務(wù)器在原理上類似,但是在實(shí)踐上又有一些不同。
Red Hat系統(tǒng)使用RPM格式的包。類Debian系統(tǒng)使用.deb的格式。它們雖然功能類似,但是包格式不同。只用一條命令就可以從二進(jìn)制庫里下載并安裝這些包到服務(wù)器上。
這樣的命令被稱為包管理器。
Red Hat系統(tǒng)上,這條命令是yum,或者是更新的dnf。Debian系的系統(tǒng)上是aptitude/dpkg。
這些包管理系統(tǒng)最大的優(yōu)勢是能很容易地安裝和升級,并且自動(dòng)安裝依賴。
如果沒有使用一個(gè)先進(jìn)的系統(tǒng),也可以遠(yuǎn)程登錄進(jìn)每一臺服務(wù)器,然后輸入yum
upgrade。最新的包就會從二進(jìn)制庫里下載安裝。當(dāng)然,我們將會看到,確實(shí)有更先進(jìn)的可部署的系統(tǒng)。因此,我們再也不需要手動(dòng)升級了。
測試環(huán)境
在構(gòu)建服務(wù)器把工件存放在二進(jìn)制庫之后,它們就可以被安裝到測試環(huán)境中。
下面的圖更詳細(xì)地展示了測試系統(tǒng):
一般來說,測試環(huán)境應(yīng)該盡可能像生產(chǎn)環(huán)境一樣。所以,它們也應(yīng)該能用相同方法在生產(chǎn)環(huán)境上安裝和配置。