參考:持續整合流程如何運作

今天,我們將回顧這個術語的歷史,討論實施 CI 的困難,並提供幾種流行的工具來幫助您使用它。

參考:持續整合流程如何運作
/flickr/ 阿爾圖格·卡拉科奇 / CC BY / 照片修改

持續整合是一種應用程式開發方法,涉及頻繁的專案建置和程式碼測試。

目標是使整合過程可預測,並在早期階段檢測潛在的錯誤和錯誤,以便有更多時間來修復它們。

持續整合這個術語首次出現於 1991 年。 它是由 UML 語言的創建者引入的 格雷迪·布奇 (格雷迪·布奇)。 這位工程師在自己的開發實踐中引入了CI的概念—— 布奇法。 它意味著在設計物件導向系統時對體系結構進行增量細化。 Gradi 沒有描述任何持續整合的要求。 但後來在他的書中“物件導向的分析與設計及其應用他表示,該方法的目標是加快「內部版本」的發布速度。

故事

1996 年,CI 被該方法論的創建者採用 極限編程 (XP)- 肯特·貝克 (肯特·貝克)和 羅恩·傑弗里斯 (羅恩·傑弗里斯)。 持續整合成為他們方法的十二個關鍵原則之一。 XP 的創始人闡明了 CI 方法的要求,並指出需要每天多次建立專案。

2000年代初,敏捷聯盟創辦人之一開始推廣持續整合方法論 馬丁·福勒 (馬丁·福勒)。 他對 CI 的實驗催生了該領域的第一個軟體工具 - CruiseControl。 該實用程式是由 Martin 的同事 Matthew Foemmel 創建的。

該工具中的建置週期作為守護程式實現,定期檢查版本控制系統以了解程式碼庫中的變更。 今天就可以下載解決方案 - 它 分發者 在類似 BSD 的許可證下。

隨著 CI 軟體的出現,越來越多的公司開始採用這種做法。 根據 Forrester 研究 [第 5 頁 報告],2009年,受訪的86家科技公司中有XNUMX%使用或實施了CI方法。

如今,持續整合的實踐已被各行各業的組織所採用。 2018 年,一家大型雲端供應商對來自服務、教育和金融業公司的 IT 專家進行了一項調查。 在 58 名受訪者中,XNUMX% 的人表示他們在工作中使用 CI 工具和原則。

Какэтоработает

持續整合基於兩個工具:版本控制系統和 CI 伺服器。 後者可以是實體設備,也可以是雲端環境中的虛擬機器。 開發人員每天上傳一次或多次新程式碼。 CI 伺服器會自動複製它以及所有依賴項並建置它。 然後,它運行整合和單元測試。 如果測試成功通過,CI 系統就會部署程式碼。

總體流程圖可以表示如下:

參考:持續整合流程如何運作

CI 方法對開發人員提出了許多要求:

  • 立即糾正問題。 這個原則是從極限編程中引入 CI 的。 修復錯誤是開發人員的首要任務。
  • 自動化流程。 開發人員和管理人員必須不斷尋找整合過程中的瓶頸並消除它們。 例如,整合經常存在瓶頸 事實證明 測試。
  • 盡可能經常舉行集會。 每天一次同步團隊的工作。

實施困難

第一個問題是營運成本高。 即使一家公司使用開放的 CI 工具(我們稍後會談到),它仍然需要在基礎設施支援上花錢。 然而,雲端技術可能是解決方案。

它們簡化了不同規模計算機配置的組裝。 公司的加分項 支付 僅針對所使用的資源,這有助於節省基礎設施。

根據調查[第14頁 文章],持續整合增加了公司員工的負擔(至少一開始是這樣)。 他們必須學習新工具,而同事並不總是幫助培訓。 因此,您必須隨時處理新的框架和服務。

第三個困難是自動化問題。 擁有大量未被自動化測試覆蓋的遺留程式碼的組織面臨著這個問題。 這導致在完全實施CI之前,程式碼被簡單地重寫了。

參考:持續整合流程如何運作
/flickr/ 泰爾 / CC BY-SA

誰使用

IT 巨頭是最先認識到該方法的好處的人之一。 Google 用途 自 2000 年代中期以來持續整合。 CI的實作是為了解決搜尋引擎的延遲問題。 持續整合有助於快速發現並解決問題。 現在CI已經被IT巨頭的所有部門所使用。

持續整合也對小公司有幫助,金融和醫療保健組織也使用 CI 工具。 例如,在 Morningstar,持續整合服務幫助修復漏洞的速度提高了 70%。 飛利浦醫療保健醫療平台能夠將測試更新速度提高一倍。

工具

以下是一些流行的 CI 工具:

  • 詹金斯 是最受歡迎的 CI 系統之一。 它支援一千多個插件,可與各種VCS、雲端平台和其他服務整合。 我們還在 1cloud 使用 Jenkins:工具 包含在我們的 DevOps 系統中。 他定期檢查用於測試的 Git 分支。
  • 建造機器人 — 用於編寫您自己的持續整合流程的 Python 框架。 該工具的初始設定相當複雜,但廣泛的自訂選項彌補了這一點。 在這個框架的優點中,使用者強調其資源強度低。
  • 大堂CI 是來自 Pivotal 的使用 Docker 容器的伺服器。 Concourse CI 與任何工具和版本控制系統整合。 開發人員指出,該系統適用於任何規模的公司。
  • 亞特實驗室持續集成 是內建於 GitLab 版本控制系統中的工具。 該服務在雲端中運行並使用 YAML 檔案進行配置。 像 Concourse、Gitlab CI 適用 Docker 容器有助於將不同的流程相互隔離。
  • 代號 是一個與 GitHub、GitLab 和 BitBucket 配合使用的雲端 CI 伺服器。 該平台不需要長時間的初始設定 - Codeship 中提供了標準的預安裝 CI 流程。 對於小型(每月最多 100 個建置)和開源項目,Codeship 是免費的。

來自我們公司部落格的資料:

來源: www.habr.com

添加評論