❶ 如何理解持續集成、持續交付、持續部署
我們經常聽到持續集成,持續交付,持續部署,它們是什麼,聯系和區別是什麼?讓我告訴你我的想法。
集成指軟體作為軟體的一部分的部分交付,以盡早發現個體開發部分的問題;
部署是能夠盡早交付到運行的開發/測試部分的代碼,以便盡早進行測試;
交付是指研究和開發盡快交付給客戶,以便盡早發現生產環境中的問題。
❷ 如何做到持續集成
首先需要理解持續集成是什麼樣子的一個概念。我曾經體會過如下圖的應用開發測試部署流程,基本每天都在做同樣的幾件事情:
1、打包,等待maven編譯打包
2、發布測試環境,手動重啟服務
3、通知測試組測試(郵件、用嘴巴喊等等方式...)
4、一頓grep查Exception,修復BUG,然後重復1、2、3、4
5、到達特殊的日子時,配合運維部署團隊到測試環境手動最新版WAR包到生產環境,23點的一瞬間執行一個腳本,時刻盯住腳本運行結果,最後驗證
我們可以發現很多問題:
▫️ 編譯打包的過程浪費開發資源,一次測試部署正常10到20分鍾,那出現問題的情況...
▫️ 測試長時間怠工,資源利用不充分,處於一人幹活多人旁觀低績效狀態
▫️ 研發與測試的溝通方式高成本低效率
▫️ BUG反饋方式低效
▫️ 生產環境得不到有效的管控以及安全保障,人工浪費
如果產品或者銷售想要給客戶演示測試環境,得到的結果可能是測試暫時不可用或者稍微等15到20分鍾,是否能計算出他們的心理陰影面積?
DevOps的中心思想在於提高產品各個階段的產出效率減少或者避開團隊間的溝通障礙,推動產品的快速迭代,「快速失敗」,從而實現持續交付、持續部署。而持續集成只是DevOps中的一個環節,下圖清晰描述了CI各個周期活動。
我們可以發現較多優點:
1、流程全自動化,減少重復性的手工操作
2、持續發布測試,時刻保持可發布的產品
3、團隊、高層對項目、產品的進展清晰可見,把控風險
4、資源效率有效利用,流動效率更快
因此,我們要做到持續集成,我們需要:
1、一套持續集成工具,大體可分為雲集成與本地化集成系統,雲集成比如Travis CI、cloudbees的雲集成等,本地化集成主要是開源Jenkins的搭建,如果需要大規模部署Jenkins且有預算可使用Jenkins商業版
2、自動化測試工具、良好的測試用例編寫
3、版本控制系統,git、gerrit推薦
4、構建、測試失敗反饋機制,郵件、自動化運維(AI...)、日誌收集分析系統
5、一套需求、產品、開發、測試、部署、運維共同使用的敏捷研發管理系統,市場上有阿里雲效、騰訊的TAPD等
6、...