那些不加班的開發團隊,都看透了持續整合的四大好處
Martin Fowler 和 Kent Beck 首次提出 Continuous Integration(簡稱 CI):
持續整合是一種軟體開發實踐:許多團隊頻繁地整合他們的工作,每位成員通常進行日常整合,進而每天會有多種整合。每個整合會由自動的構建(包括測試)來儘可能快地檢測錯誤。許多團隊發現這種方法可以顯著的減少整合問題並且可以使團隊開發更加快捷。
持續整合,讓很多開發團隊又「 愛 」又「 恨 」。愛,在於整個流程對專案的交付價值大有裨益,盡最大可能地減少不必要的加班;恨,在於成本過大,部署的困難、工程文化的隔閡。
無論你是堅定的持續整合擁護者,中立派,甚至是 CI 反對者,作為一個高效的開發工具,持續整合是一個非常重要特殊的存在。透過這篇文章,我們來看看持續整合的好處有哪些。
儘早暴露問題,把握開發節奏
在團隊開發中,問題暴露的越早,修復程式碼的成本越低,成功部署的勝算就越大。持續整合高頻率地編譯、測試、審查、部署專案程式碼,這其中程式碼整合是主要的風險來源。要想規避這個風險,只有提早整合,持續而有規律的整合,以此來確保當前程式碼庫的質量,把握開發的程序和節奏。
當然發現問題程式碼,也不要一味地墜入快速的簡單修復之中,要投入時間和精力保持程式碼的整潔、敞亮。
很明顯的一點,使用持續整合後,程式設計師們提交程式碼也會變得更加小心謹慎。想想應該沒人樂意讓其他同事不停地見到自己的分支上 CI 失敗的通知郵件吧:)
避免重複操作,讓流程自動化
工具環境的滯後,加上工作的重複枯燥,讓開發者對寫程式失去新鮮感。
在持續整合過程,一步一步的編譯、測試、審查、部署,牽扯大量重複的工作。搭建持續整合環境,可以讓開發人員不再需要手動地 checkout 程式碼,節省大量的時間和避免不必要的壓力,把精力放在更多有價值的事情上,這樣也可以形成良性的迴圈。
flow.ci 是融入了 workflow 機制的持續整合(CI)服務,也可以理解為自動化流程平臺,除了整合程式碼、編譯、測試之外,還可以整合常用的工具、靈活自定義流程。工程師只需要專注寫程式碼,其他的 build, test, deploy 都可以交給 flow.ci 來完成。一切運轉起來只需要 1 分鐘!
保持隨時部署,簡化釋出流程
每日高頻率的整合保證了專案隨時處於可部署執行的狀態,如果沒有持續整合,專案釋出之前將不得不手動地整合,然後花費大量精力修復整合問題,弄的團隊成員疲憊不堪。
使用持續整合,幫助我們跨越頻繁部署的障礙。大家都知道,只有保持頻繁部署,讓使用者看到產品的新特性, 才能不斷地磨合最佳化構建和釋出流程,讓反饋週期更短更有效。
flow.ci 包含各種程式碼質量檢測分析和報告的外掛,可以輕鬆地檢視專案的測試結果。
增強團隊信心,建立工程師文化
無論什麼樣的工程師,都會對存在大量 bug 的程式碼產生恐懼心理,這就是心理學上的的 Broken Windows 綜合症(Broken Windows syndrome)。CI 可以有效防止破窗綜合症,讓開發團隊一點點積累起對產品的信心,對使用技術的保持成就感。
與此同時,持續整合讓每個人都能看到良好的介面和檢視來了解專案的成熟度,讓所有人都知道正在發生什麼。也許更容易增強開發信心,培養團隊良好的工程文化,齊心協力向目標前進。
除了上面我們所總結的 CI 的好處,APIUMTECH 在Top benefits of continuous integration文章中有一張圖說非常全面,分享給大家:
作為編碼規範的度量尺、程式碼質量的把關者、專案健康的測量儀,CI 可以做的事情還有很多。
歡迎分享你的觀點。
相關文章
- 持續整合對IT團隊和企業分別有哪些好處?
- 初創團隊持續整合的落地與實現(gitlab+python)GitlabPython
- 不會DRF?原始碼都分析透了確定不來看?原始碼
- 團隊效率-基建開源(持續更新)
- Wiki憑什麼持續得到開發人員和團隊的喜愛
- Laravel 團隊任務管理系統(持續開發、優化)Laravel優化
- SAP開源的持續整合-持續交付的解決方案
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- MCI:大眾點評千人移動研發團隊怎樣做持續整合?
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 持續整合、持續交付與持續部署
- 持續整合、持續部署、持續交付、持續釋出
- CRM系統的四大好處
- QCon 全球軟體開發大會 | 大型團隊研發效率持續改進實踐
- 小程式的持續整合方案
- 淺談持續整合的理解以及實現持續整合,需要做什麼?
- 持續發燒,聊聊Dart語言的併發處理,能挑戰Go不?DartGo
- Jenkins持續整合Jenkins
- 持續整合 2.0
- 持續整合(二)
- 你真的懂持續整合、持續交付、持續部署嗎?!
- Linux 核心的持續整合測試Linux
- 微服務化的基石——持續整合微服務
- 花椒前端基於 Docker 的 SSR 持續開發整合環境實踐前端Docker
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 以 egg.js 為例的持續整合(CI)、持續部署(CD)JS
- Xcode10更新的那些坑(持續更新)XCode
- 3分鐘瞭解清楚持續整合、持續交付、持續部署
- Jenkins持續整合配置Jenkins
- CircleCI 與持續整合
- 開始使用Travis CI持續整合你的專案吧
- 前端 docker + gitlab CI 的持續整合(三)前端DockerGitlab
- 前端 docker + gitlab CI 的持續整合(二)前端DockerGitlab
- 前端 docker + gitlab CI 的持續整合(一)前端DockerGitlab
- SAP CRM On-Premises 仍然處於新功能的持續開發階段REM
- 那些拼命加班的程式設計師們,後來都怎麼樣了?程式設計師
- 前端專案基於GitLab-CI的持續整合/持續部署(CI/CD)前端Gitlab
- SpringBoot+Docker+Git+Jenkins實現簡易的持續整合和持續部署Spring BootDockerGitJenkins
- 團隊開發中 Git 最佳實踐,不給隊友拖後腿Git