持續集成與持續交付之間的聯繫和區別

做者 | Rebecca Pruessgit

編譯 | 毛智偉github

隨着DevOps理念的普及與擴散,你們常常會看到持續集成(Continuous Integration)與持續交付(Continuous Delivery)這樣的字眼,而怎樣使用與選擇這些方法成了大多數IT團隊必須面對的問題。在討論更加深刻地討論問題以前,首先須要清楚這二者之間的主要區別是什麼,以及用什麼方法能夠更好改善工做流程,從而在更短的時間內爲目標用戶提供更高質量的軟件。安全

devops

持續集成(CI)和持續交付(CD)都體現了現在快節奏市場中的文化和發展原則,旨在縮短開發週期、提升軟件交付效率以及實現全流程的自動化。同時,二者都有着共同的目標:讓軟件開發更少地依賴於手動執行的任務,在此基礎上使得軟件的發佈更加頻繁、更加安全可靠。因爲有着相同的目標,所以持續集成和持續交付並不是相互排斥的。只是它們的應用範圍有所不一樣。微信

那下面就來看下CI與CD之間的聯繫與區別。架構

什麼是持續集成

如上所述,CI和CD是相互關聯的。持續集成是指軟件我的研發的部分向軟件總體部分交付,頻繁進行集成以便更快地發現其中的錯誤。因而可知,CI專一於按期地讓開發人員構建小批量的代碼。而對於更新或新增的代碼,它們會被上傳至統一的代碼庫,執行自動構建與自動化測試的步驟。 頻繁地向主幹提交代碼,意味着能夠針對整個軟件執行全部的自動化測試,而且在應用或接口的某個部分出現問題時,及時收到告警信息。框架

因爲合併問題能被及時發現,所以也能被及時解決。此外,因爲測試過程採用的是自動化測試,所以最終的主幹分支一直處於可發佈的狀態。而這對傳統的瀑布式的開發流程來講就很棘手。遵循CI中定義的原則,有助於進一步提升代碼的可測試性和可部署性。經過將代碼保持在可部署狀態,就能避免在項目後期才進行單獨的測試和Bug的修復,由此使得開發人員避開了「集成地獄」。而這也是Choerodon豬齒魚開發流水線模塊的主要目的。微服務

CI

什麼是持續交付

持續集成包含了構建與自動化測試的階段,而持續交付在持續集成的基礎上,將集成後的代碼部署到更貼近真實運行環境的「類生產環境」之中。持續交付優先於整個產品生命週期的軟件部署,創建在高水平自動化持續集成之上。此外,持續交付一樣遵循一個小型的構建週期,能夠將一小批代碼推送到多個環境:開發,測試或生產。工具

在此過程當中,它結合了持續集成和持續部署的實踐(即:讓主幹始終處於可部署狀態)。而在Choerodon豬齒魚平臺中,當提交的代碼完成以上步驟後,能夠在「部署流水線-流水線管理」中建立對應的CD流水線將持續集成後產生的應用版本自動部署到對應的環境中去。此外,對於部署到正式環境的代碼,能夠在流水線中間添加一我的工卡點任務,只有經過人工審覈後,才能執行後續的自動部署任務。測試

CD

理論上來講,CD使得IT團隊能夠天天發佈與更新應用程序,但大多數IT團隊選擇每個月或每兩個月發佈更完整的更新。編碼

持續集成與持續交付的區別

CI和CD之間的區別在於使用的範圍和主要的受益者。

(1)持續集成

持續集成對於加快編碼和構建階段的軟件交付過程相當重要。所以,它的目標對象主要是開發人員,特別是那些處在複雜組織架構中的開發人員。經過自動構建和測試的流程,將對軟件作的全部更改都集成到統一的代碼庫中,而無需進行手動任務。此外,因爲CI是一個持續的過程,所以開發人員能夠即時獲得問題的反饋。他們能夠實時獲取到相關錯誤的信息,以便快速地定位與解決問題。顯然這個過程能夠大大地提升開發人員以及整個IT團隊的工做效率。

(2)持續交付

持續交付涵蓋了軟件交付生命週期的絕大部分,能爲目標用戶和客戶帶來重大利益。CD中包含了自動構建,打包,部署與測試的流程,以此來減小手動任務並加快軟件交付速度。小批量的代碼成功完成整個流程的每一個階段後,目標用戶或客戶便能在類生產環境中進行驗收。所以目標用戶能夠在幾天或幾周內就收到修復後的功能與新增的功能,而無需等待數月後才更新。

CD的部署頻率也加快了整個流程中的反饋循環。最新版本真的解決了預期的問題嗎?是否知足了用戶的需求?在此用戶就能夠快速地驗收並做出判斷,而IT團隊也能夠在問題影響到開發週期以前就解決反饋的問題。持續的反饋循環使得用戶與IT團隊更緊密地合做,以確保能準確的理解與知足他們的需求。整個交付過程進度可視化,方便團隊人員與客戶瞭解項目的進度。

在當前快節奏的市場中,這無疑是一個重大的優點。當您將軟件更快地推向市場時,您將得到更大的競爭優點。

CI或CD適合您的業務場景嗎

持續集成可確保代碼庫中始終保持最新的代碼,同時能夠快速集成來自多個開發人員的代碼,並確保這些代碼可在多個環境中協同工做。它一般有助於減小錯誤並經過自動化流程來減小手動任務。CI能夠實現代碼的自動構建與測試,減小開發中的Bug。所以,CI適用於那些過分依賴手動任務和複雜構建過程的企業。

持續交付適用於須要縮短開發週期,更快地爲目標用戶提供軟件的企業。CD下降了部署新軟件或升級已有軟件的難度,且實現了全流程的自動化,所以您的團隊無需手動執行復雜繁瑣的任務,從而加快反饋速度,來確保您增長的功能真正地知足用戶的需求。

總而言之,CI和CD是相互補充的。CI的統一代碼庫和自動化測試的方法可用於支持CD中更大規模的自動化和更頻繁的部署。所以將CI和CD結合到您開發與交付的流程中,會使您的IT團隊更加敏捷,更加快速地開發。

目前,大多數CI / CD的工具採用的方法都大同小異。 而通常的DevOps工具一般都會支持CI和CD方法,相應地還會提供相關的自動化測試框架。Choerodon豬齒魚平臺中的DevOps模塊即是結合了CI與CD的方法,並在此基礎上實現了測試與部署的自動化。用戶須要根據本身的實質需求來建立CD流水線,以此來實現不一樣環境不一樣版本類型的自動化部署;固然,您還能夠在其中設置人工卡點任務,使得CD流水線隨時處於人工的監控之下。

此外,也有很多人認爲CI是CD的前提與基礎,沒有CI就不能實現CD。這種說法也是比較流行的,其思路以下圖。所以,不論是哪一種說法,CI與CD都是DevOps工具中不可或缺的理念與方法。

devops flow

原文地址: dzone.com/articles/co…

更多Choerodon豬齒魚持續交付相關文章▼

關於Choerodon豬齒魚

Choerodon豬齒魚開源多雲技術平臺,是基於開源技術Kubernetes,Istio,knative,Gitlab,Spring Cloud來實現本地和雲端環境的集成,實現企業多雲/混合雲應用環境的一致性。平臺經過提供精益敏捷、持續交付、容器環境、微服務、DevOps等能力來幫助組織團隊來完成軟件的生命週期管理,從而更快、更頻繁地交付更穩定的軟件。

你們也能夠經過如下社區途徑瞭解豬齒魚的最新動態、產品特性,以及參與社區貢獻:

相關文章
相關標籤/搜索