管理真正構(gòu)建是非常復(fù)雜的,但至少我們學(xué)會了如何安裝和啟動Jenkins。中培專家龔老師指出,如果在安裝fortune程序時遇上了麻煩,你還會對持續(xù)集成服務(wù)器的陰暗面有一個初步的了解:管理構(gòu)建依賴。
有些構(gòu)建系統(tǒng),例如Maven工具,它的POM文件描述了所需的構(gòu)建依賴,這一點很不錯。如果這些依賴在構(gòu)建服務(wù)器里還不存在,Maven會自動下載它們。JavaScript的構(gòu)建工具Grunt也很類似,有一個構(gòu)建描述文件包含了構(gòu)建所需要的依賴。Golang為了完成構(gòu)建,甚至還可以包含GitHub庫的鏈接。
C和C++構(gòu)建存在著不同的挑戰(zhàn)。許多項目使用GNU的Autotools,它的Autoconf并不描述需要的依賴,而是適配主機上可用的依賴。所以,為了構(gòu)建文本編輯器Emacs,你需要先運行配置腳本來查明構(gòu)建系統(tǒng)上潛在的諸多依賴中哪一個是可用的。
讓軟件在許多不同的系統(tǒng)配置上都可用是一個很有用的功能,因為我們并不總是想讓建基于重量級的配置。在這種情況下,我們需要確定哪個功能百分百終將可用。我們當(dāng)然不想因為在產(chǎn)品環(huán)境上遺漏功能而大吃一驚。
RPM( Red Hat Package Manager)系統(tǒng),用于基于Red Hat的各種系統(tǒng),給這個問題提供了一個解決方案。RPM系統(tǒng)的核心是一個稱為spec文件的構(gòu)件描述文件。它列出了需要成功構(gòu)建所需的構(gòu)建依賴、構(gòu)建命令,還有使用的配置選項。因為一個spec文件本質(zhì)上是一個基于宏的shell腳本,所以你可以用它來構(gòu)建許多類型的軟件。砌,M系統(tǒng)也認為構(gòu)建源代碼應(yīng)該從零開始。可以用構(gòu)建之前通過spec文件給源代碼打包的方式適配源代碼。
最終工件
在使用RPM系統(tǒng)完成構(gòu)建之后,你得到了一個RPM文件,這種類型可以很方便地給Red Hat系列操作系統(tǒng)部署工件。對于Debian系的發(fā)行版來說,你得到的是個.deb文件。 Maven構(gòu)建的最終結(jié)果一般是企業(yè)級檔案,簡稱EAR文件。它包含著Java企業(yè)級應(yīng)用。
它是我們之后要部署到生產(chǎn)服務(wù)器上的最終部署工件。
盡管如此,即使在構(gòu)建工件的時候,我們也需要理解如何部署它們。現(xiàn)在,我們將要使用以下的經(jīng)驗法則:操作系統(tǒng)級別的包優(yōu)于特定的包。這是我的個人喜好,其他人可能不同意。
讓我們簡要地討論一下這個經(jīng)驗法則的背景和其他的方案。
作為一個實際的例子,讓我們考慮Java EAR的部署。通常,我們有幾種方法來實現(xiàn)。
想了解更多IT資訊,請訪問中培偉業(yè)官網(wǎng):中培偉業(yè)