一 持續(xù)集成是什么
持續(xù)集成是一種軟件開發(fā)實踐荐开,即團隊開發(fā)成員經(jīng)常集成他們的工作付翁,通過每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成晃听。每次集成都通過自動化的構(gòu)建(包括編譯百侧,發(fā)布,自動化測試)來驗證能扒,從而盡早地發(fā)現(xiàn)集成錯誤佣渴。
對于很多軟件項目來說,開發(fā)人員雖然可以做到在提交代碼后對代碼進行自動化的單元測試赫粥, 但基本上沒人會在試運行環(huán)境中去啟動并使用它观话。這樣便可能會發(fā)生一些潛在的問題。比如當開發(fā)結(jié)束后需要留出很長時間去集成越平,這個階段往往會很費時間频蛔,最糟糕的是沒人知道這將會花費多長時間才能完成集成灵迫。
所以我們應該盡早去做持續(xù)集成,而持續(xù)集成的目的就是讓軟件一直處于可工作的狀態(tài)晦溪。
二 實現(xiàn)持續(xù)集成
1瀑粥、準備工作
- 版本控制:任何項目都應該使用版本控制
- 自動化構(gòu)建
- 團隊意識
2、一個基本的持續(xù)集成系統(tǒng)
- 查看一下是否有構(gòu)建正在運行三圆,如果有的話狞换,等它完事,如果它失敗了舟肉,就和團隊的其他人把他一起修復修噪,然后再提交代碼
- 一旦構(gòu)建完成且測試完全通過,就從版本控制庫中將該版本的代碼更新到自己的開發(fā)環(huán)境上
- 在自己的開發(fā)機上執(zhí)行構(gòu)建腳本路媚,運行測試黄琼,以確保在你機器上的所有代碼都正常工作
- 如果本地構(gòu)建成功,提交代碼
- 然后等待你這次提交的構(gòu)建結(jié)果
- 如果失敗了整慎,停下手中的活脏款,修復問題,轉(zhuǎn)到步驟3
- 如果成功裤园,開始下個任務
三 持續(xù)集成的前提條件
1撤师、頻繁提交
2、創(chuàng)建全面的自動化測試套件
自動化測試的套件包括:
- 單元測試:用來測試應用程序中某些小單元的行為(方法拧揽、函數(shù)...)剃盾,通常不需要啟動整個應用程序,也不需要連接數(shù)據(jù)庫强法、文件系統(tǒng)或網(wǎng)絡万俗。
- 組件測試:用于測試應用程序中幾個組件的行為。它也不需要啟動整個應用程序饮怯,但有可能需要連接數(shù)據(jù)庫、訪問文件系統(tǒng)或其它外部系統(tǒng)或接口嚎研。
- 驗收測試:用來驗證應用程序是否滿足厭惡需要所定應的驗收條件蓖墅,包括應用程序提供的功能,以及其它特定需求临扮。一般會將整個應用程序運行于類生產(chǎn)環(huán)境的運作方式论矾。
3、保持較短的構(gòu)建和測試過程
4杆勇、管理開發(fā)工作區(qū)
當開發(fā)人員開始工作的時候贪壳,應該總是從一個已知正確的狀態(tài)開始。
四 應該遵守的實踐
- 構(gòu)建失敗之后不要提交新代碼
- 提交前在本地運行所有的提交測試蚜退,或者讓持續(xù)集成服務器完成此事
- 等提交測試通過之后再繼續(xù)工作
- 回家之前闰靴,構(gòu)建必須處于成功狀態(tài)
- 時刻準備著回滾到前一個版本
- 按照持續(xù)集成的流程彪笼,前一個版本肯定是沒有問題的
- 在回滾之前規(guī)定一個修復時間
- 不要將失敗的測試注釋掉
- 為自己的導致的問題負責
- 測試驅(qū)動開發(fā)