現(xiàn)代IT系統(tǒng)的開發(fā)多是由一個數(shù)人組成的開發(fā)團隊共同完成,在多人協(xié)同開發(fā)的情況激捏,如何進行有效的代碼集成將直接影響到項目的進度设塔、效率、質(zhì)量远舅。
什么是持續(xù)集成
持續(xù)集成的一個要點是頻繁的進行代碼集成闰蛔,并且快速解決集成代碼中的錯誤痕钢。以下是持續(xù)集成的一個典型流程:
關鍵實踐
維護統(tǒng)一的代碼庫
使用代碼庫最常犯的錯誤是只把代碼儲存在代碼中,而忽略了測試用例腳本序六、配置文件任连、數(shù)據(jù)庫schema文件、安裝腳本例诀、以及第三方庫随抠。什么應該提交至代碼庫的基本原則是:當我們要部署一臺剛初始化的服務器時,可以通過代碼庫中的內(nèi)容完成部署繁涂。自動化構建
構建的過程盡量優(yōu)化拱她,以縮短構建的時間。例如:一個小的變更爆土,可能不需要對整個項目進行全盤的構建椭懊,而只需要對其修改、影響部分進行構建即可步势,從而減少不必要的構建時間氧猬。
確保自己的代碼經(jīng)過測試
確保代碼經(jīng)過自測試的最佳實踐是通過自動化測試。代碼在提交前通過已定義的測試集進行測試坏瘩,以保障基礎的質(zhì)量水平盅抚。每天提交代碼
集成其實是程序員間的一種交流方式。頻繁的代碼集成倔矾,有助于程序員間進行互相了解妄均,程序員可以更早的發(fā)現(xiàn)代碼間的沖突,從而可以今早解決主干代碼的問題哪自,保證主干代碼的健康丰包。否則,問題日積月累壤巷,積重難返邑彪。
代碼提交成功以提交后構建成功為準
這部分有兩類型典型的錯誤用法。一種是程序員提交代碼后胧华,不需要參考集成構建的結果寄症,則認為集成已經(jīng)成功了;另一種是代碼的集成構建通常在一天的晚上進行矩动,而不是代碼每次提交后進行有巧。這兩種做法的主要問題是代碼提交后,若不經(jīng)過構建悲没,無法發(fā)現(xiàn)潛在的問題篮迎。即使是每天晚上進行集成構建,當發(fā)現(xiàn)問題時,已經(jīng)很難分辨問題的責任人柑潦。因此享言,這部分的最佳實踐應該是代碼提交后峻凫,立即執(zhí)行構建渗鬼。若出現(xiàn)問題,程序員即時進行處理荧琼。當構建成功后譬胎,才認為代碼提交成功。立即解決代碼集成出現(xiàn)的錯誤
當集成構建出現(xiàn)問題時命锄,需要立即解決問題堰乔。否則問題越積越多,復雜性越來越大脐恩,則積重難返镐侯。加快構建的速度
構建的速度將直接影響開發(fā)的效率。但是在構建的過程中驶冒,如果涉及到大量的外部系統(tǒng)苟翻、數(shù)據(jù)庫調(diào)用、測試集骗污,這都會降低構建的效率崇猫。但是,如果通過stub需忿、減少測試集等方法來提高構建效率诅炉,這又會影響構建的質(zhì)量水平。因此屋厘,為了提高構建效率涕烧,一種比較好的實踐是將構建分為幾個階段。第一個構建階段汗洒,通過stub的方式減少對外部系統(tǒng)的依賴议纯,保持必要的測試集盡量保障構建的效率。第二個階段仲翎,進行比較全面的集成測試痹扇,以保障質(zhì)量。溝通這種方式溯香,保障開發(fā)效率以及開發(fā)質(zhì)量間的平衡鲫构。在類生產(chǎn)商環(huán)境中進行測試
盡量在模擬生成環(huán)境進行測試∶堤常可通過容器结笨、云計算的方式盡量模擬生產(chǎn)環(huán)境。讓可執(zhí)行的包可以被很容易的獲取
在敏捷實踐中,快速向用戶展示可用的產(chǎn)品獲得用戶反饋是保障項產(chǎn)品成功的關鍵伐憾。因此赫模,用戶瀑罗、產(chǎn)品經(jīng)理、相關干系人能夠輕易的找到可執(zhí)行的產(chǎn)品進行試用是持續(xù)集成的最佳實踐之一劣像。
- 自動化發(fā)布
在集成完成后耳奕,通過自動化的方式對接持續(xù)交付進入交付管道诬像。
持續(xù)集成的好處
簡單來說持續(xù)集成帶來的最大的好處是降低來風險颅停。雖然持續(xù)集成并沒有減少bug的產(chǎn)生癞揉,但是通過快速集成、構建的方式柏肪,今早的發(fā)現(xiàn)問題芥牌,解決問題壁拉,從而加強來系統(tǒng)的質(zhì)量,強化了整個團隊對系統(tǒng)的信心溃论。
參考文獻
- Continuous Integration - https://www.martinfowler.com/articles/continuousIntegration.html
pstrike 2018.08.20 于廣州天河
【尊重版權:轉(zhuǎn)載之前請先聯(lián)系我】