持續整合 自動化

2021-06-15 03:48:33 字數 1977 閱讀 7966

一、什麼是持續整合(continuous integration)?

這個名詞已經在軟體開發領域持續了n年,乙個比較簡單的定義如下:

持續整合(ci)

是一種實踐,可以讓團隊在持續的基礎 上收到反饋並進行改進,不必等到開發周期後期才尋找和修復缺陷。通俗一點兒說,就是指

對於開發人員的每一次**提交,都自動地把repository中所有**check out到乙個空目錄,並且自動執行所有test case。如果成功則接受這次提交,否則告訴所有人,這是乙個失敗的revision。更具體的解釋可以參考

martin fowler的

continuous integration  。

二、持續整合的價值與成本

有句時髦的話,叫做「存在即為合理」。既然持續整合已經存在了這麼長的時間,而且沒有消失的跡象,那就是有價值的東西。那麼它的價值何在?

有人概括如下:(1) 減小風險;(2) 減少手動過程;(3) 生成構建結果;(4) 安全感。

而持續整合的成本在於對持續整合**的維護成本和整合的時間成本。因為隨著專案進行,軟硬體環境會越來越複雜,成品**也會不斷膨脹。此時,需要團隊而修改或增加原有的測試**,以適應這些變化,同時,每次整合所需時間也會變長,這就是持續整合的成本。

某個blog中提道:「這種整合是如此的頻繁,多少次的**commit就有多少次持續整合。前提是整合的成本很低,或者說是完全自動化的。」

三、持續整合應該自動化什麼呢?

我們要以盡可能少的成本來獲得盡可能多的價值。這就要考慮哪些自動化是必要的啦。

jez humble提到至少有六點要做到自動化,它們分別是(1)自動化的執行測試;(2) 自動產生可部署的二進位製成品;(3) 自動將成品自動部署到近似生產環境;(4) 自動為codebase打上標籤;(5) 自動執行回歸測試;(6)自動生成度量報告。

四、持續整合伺服器的選擇

在進行持續整合實踐前,應當正確的選擇並配置持續整合伺服器。比較成熟的持續整合伺服器包括:cruisecontrol, anthill, bamboo, teamcity, continuum 等。cruisecontrol作為開源產品,以其對於各種scm以及構建工具的廣泛支援而被許多開發團隊所接受。而開發自動化專家 duvall 採用一致的評估標準和很多說明性示例,介紹了一些開源 ci 伺服器,包括 continuum、cruisecontrol 和 luntbuild。並指出「

要根據 自己的 具體技術和政策需求對工具進行分析」。並用以下五個指標來評估ci工具,它們分別是:(1)  特性;(2)  可靠性;(3)  壽命;(4) 目標環境;(5) 易用性。結果如下表:

而cruisecontrol是我唯一真正用過的持續整合工具,

它現在靈活而又強大功能也讓我瞠目,而且配置與管理也較兩年前容易得多啦。為什麼說它強大呢?因為你只要想得到的問題,它也都會有所考慮。

朋友的blog上有些cruisecontrol的最佳實踐足以證明這一點,只要你肯去實踐。

五、只有持續整合伺服器是遠遠不夠的

正如jez humble所說,

cruisecontrol和其它的ci工具本質上只不過是乙個定時器,時間一到,做你讓它做的事情。所以,必然要有其它工具與其結合,方顯持續整合的本色。這些工具又是什麼呢?想測試的話,你就要用一些測試工具,如junit,jwebunit,selenium等等;想檢查**標準的話,你就要用checkstyle等**規範檢查工具;想要了解測試覆蓋率的話,你可能就要用到jcoverage啦。當然,想得到二進位制檔案,就要用到ant,make之類的工具啦。

六、最重要的事:實踐與反思

也許這些東西大家都知道,而且有些人可能已經實踐過啦。無論這些實踐的結果是怎樣的,一定不要忘記總結和反思。如果這些實踐成功了,不要把它歸功於這個工具,而是要總結一下為什麼會成功,如果你願意的話,還可以和大家分享一下。如果這些實踐失敗了,也不要把它歸功於這個工具,而是要反思一下,是否正確地使用了這個工具,團隊成員是否都喜歡這個工具,為什麼?

持續整合自動化部署 目錄

git基礎 環境安裝 git 分支管理 git 倉庫管理 git 標籤管理 gitlab 簡介 gitlab 許可權管理issue管理 gitlab 備份與恢復遷移與公升級 souretree使用 自動化流程設計 jenkins gitlab簡介 jenkins gitlab實現持續整合 質量管理 ...

自動化持續整合Jenkins

自動化持續整合jenkins 使用jenkins配置自動化構建 jenkins入門總結 jenkins sonar 的系統,用來執行自動構建 自動部署 自動測試,質量評估的整套平台,用來做敏捷。持續整合是個簡單重複勞動,人來操作費時費力,使用自動化構建工具完成是最好不過的了。後期應該搞單元測試,自動...

自動化測試,自動化測試框架,持續整合

基於espresso和dagger的自動化測試框架 測試框架可以使用android推薦的espresso.模擬資料可以使用dagger2,一種依賴注入框架.dagger2沒有使用反射,而是使用預生成 提高執行速度.基於espresso和dagger的自動化測試框架 持續整合與自動化測試,自動化測試框...