管理構(gòu)建依賴
在前面那個簡單的例子里,我們往構(gòu)建日志打印了一個幸運曲奇。
這次練習(xí)還不能與管理真正構(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)配置上都可用是一個很有用的功能,因為我們并不總是想讓建基于重量級的配置。在這種情況下,我們需要確定哪個功能百分百終將可用。我們當然不想因為在產(chǎn)品環(huán)境上遺漏功能而大吃一驚。