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