持續集成是什么?
發表于:2017-04-24來源:juejin作者:Surmon點擊數:
標簽:持續集成
持續集成是一種軟件開發實踐,即團隊開發成員經常集成它們的工作代碼,每個成員每天至少集成一次,也可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動
互聯網軟件的開發,已經成熟、標準化,其中最重要的組成部分就是持續集成(Continuous integration,簡稱CI)。
持續集成是一種軟件開發實踐,即團隊開發成員經常集成它們的工作代碼,每個成員每天至少集成一次,也可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成BUG,并解決。
簡單說就是:
頻繁地提交代碼,集成進主干分支,及早發現問題,并解決。
舉個例子:
-
公司某項目在代碼倉庫存在三個分支:dev(開發分支)、master(主干分支)、release(預發布分支)
-
開發組有兩個以上的人員在分別開發A、B、C...等不同的功能模塊
-
每個開發人員完成自身某個功能模塊的開發后,需要將本地檢驗合格的代碼push到dev分支,
-
代碼倉庫配置的webhooks會根據commit動作回調測試服務器,測試服務器對提交的代碼進行單元測試
-
單元測試通過,則集成進主干分支;不通過則不集成,并通知生成方完善處理
-
集成進主干分支后,主干分支進行編譯、構建(主要包含環境配置、安裝依賴、資源整理)
-
構建完成,進行集成測試(整體測試 [, 端對端測試]),測試通過則將主干分支合并至預發布分支(release)
-
合并至預發布分支后,預發布分支根據實際需求選擇是否直接實施部署
-
如果部署,則部署服務器則會將最新預發布分支的代碼,打包為當前版本,并推送至生產服務器
-
生產服務器解壓最新代碼包至指定目錄,修改程序的路徑指向最新代碼目錄,并重載生產服務
-
如若出現異常,生產服務器則直接將程序路徑指向上一個版本的目錄,進行回滾
如上所述,一個完整的持續集成流程至少需要包含: 測試服務 、 部署服務 、 生產服務 三部分;
單元測試、集成測試、功能測試這些自動化測試方法,是項目持續部署的基礎,大部分測試都應該是自動化完成的,自動化測試覆蓋不到的,應由人工測試;
原文轉自:https://juejin.im/post/58f9ee860ce46300611be392