CICD简介[通俗易懂]
CI/CD
? CI/CD 的出現改變了開發和測試人員發布軟件的方式。
? 傳統的軟件開發和交付方式在迅速變得過時。過去的敏捷時代里,大多數公司的軟件發布周期是每月、每季度甚至每年,而在現在 DevOps 時代,每周、每天甚至每天多次都是常態。當 SaaS(軟件即服務) 成為業界主流后尤其如此,您可以輕松地動態更新應用程序,而無需強迫用戶下載更新組件。很多時候,用戶甚至都不會注意到正在發生變化。開發團隊通過軟件交付流水線(Pipeline)實現自動化,以縮短交付周期,大多數團隊都有自動化流程來檢查代碼并部署到新環境。
CI是什么?
持續集成
? 定義:頻繁地(一天多次)將代碼集成到主干。CI是一種通過在應用開發階段引入自動化來頻繁向客戶交付應用的方法。CI 的核心概念是持續集成、持續交付和持續部署。作為一個面向開發和運營團隊的解決方案,CI 主要針對在集成新代碼時所引發的問題(亦稱“集成地獄”)。
? 持續集成強調開發人員提交了新代碼之后,立刻自動的進行構建、(單元)測試。根據測試結果,我們可以確定新代碼和原有代碼能否正確地集成在一起。
持續集成的目的
? 就是讓產品可以快速迭代,同時還能保持高質量**。**它的核心措施是,代碼集成到主干之前,必須通過自動化測試。只要有一個測試用例失敗,就不能集成。
? 持續集成過程中很重視自動化測試驗證結果,對可能出現的一些問題進行預警,以保障最終合并的代碼沒有問題。
持續集成的作用
- 代碼庫存越是積壓,就越得不到生產檢驗,積壓越多,代碼間交叉感染的概率越大,下個發布(release)的復雜度和風險越高,持續集成可以保證團隊開發人員提交代碼的質量,減輕了軟件發布時的壓力;
- 持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,有利于減少重復過程以節省時間、費用和工作量;
- 及早的發現代碼中的問題,及早解決,代碼越早推送(PUSH)出去,用戶能越早用到,快就是商業價值;
特點
- 它是一個自動化的周期性的集成測試過程,從檢出代碼、編譯構建、運行測試、結果記錄、測試統計等都是自動完成的,無需人工干預;
- 需要有專門的集成服務器來執行集成構建;
- 需要有代碼托管工具支持;
CD是什么?
? CI/CD 中的“CD”指的是持續交付和/或持續部署,這些相關概念有時會交叉使用。兩者都事關管道后續階段的自動化,但它們有時也會單獨使用,用于說明自動化程度。
? 持續交付(Continuous delivery)指的是,頻繁地將軟件的新版本,交付給質量團隊或者用戶,以供評審。如果評審通過,代碼就進入生產階段。
? 持續交付可以看作持續集成的下一步。它強調的是,不管怎么更新,軟件是隨時隨地可以交付的。持續交付通常是指開發人員對應用的更改會自動進行錯誤測試并上傳到存儲庫(如 GitHub或容器注冊表),然后由運維團隊將其部署到實時生產環境中。這旨在解決開發和運維團隊之間可見性及溝通較差的問題。因此,持續交付的目的就是確保盡可能減少部署新代碼時所需的工作量。
? 持續部署(另一種“CD”)指的是自動將開發人員的更改從存儲庫發布到生產環境,以供客戶使用。它主要為了解決因手動流程降低應用交付速度,從而使運維團隊超負荷的問題。持續部署以持續交付的優勢為根基,實現了管道后續階段的自動化。
? 歸根結底,我們沒必要糾結于這些語義,您只需記得 CI/CD 其實就是一個流程(通常形象地表述為管道),用于實現應用開發中的高度持續自動化和持續監控。因案例而異,該術語的具體含義取決于 CI/CD 管道的自動化程度。許多企業最開始先添加 CI,然后逐步實現交付和部署的自動化(例如作為[云原生應用]的一部分)。
CICD實現過程
工廠里的裝配線以快速、自動化、可重復的方式從原材料生產出消費品。同樣,軟件交付管道以快速、自動化和可重復的方式從源代碼生成發布版本。如何完成這項工作的總體設計稱為“持續交付”(CD)。啟動裝配線的過程稱為“持續集成”(CI)。確保質量的過程稱為“持續測試”,將最終產品提供給用戶的過程稱為“持續部署”
實現流程
? 1、運維管理員創建gitlab項目,創建Jenkins項目
? 2、開發人員將code提交到對應的gitlab中(可按分支觸發)
? 3、gitlab通過webhook觸發對應Jenkins項目
? 4、進入CI環節:將code集成進標準的docker鏡像中,并進行測試;
? 集成及測試成功,則將集成后的鏡像上傳至倉庫中;
集成或測試失敗,則結束本次Jenkins,并將原因通過郵件發送給開發者與運維管理員。
? 5、進入CD環節:
? 通過Ansible將CI集成成功的鏡像部署到已定義的所有機子中,并進行測試。
? 如測試通過完成本次部署,如測試失敗將判定該項目是否為第一次部署的;
? 如該項目不是第一次部署的,則滾回到上一版本的容器,并將原因通過郵件發送給運維管理員。
如測試失敗將判定該項目是否為第一次部署的;
? 如該項目不是第一次部署的,則滾回到上一版本的容器,并將原因通過郵件發送給運維管理員。
總結
以上是生活随笔為你收集整理的CICD简介[通俗易懂]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts 2的OGNL表达式
- 下一篇: 专业编写c语言的软件,适合编写C语言代码