0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文教你分清持續(xù)集成,持續(xù)交付,持續(xù)部署

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2023-06-25 17:17 ? 次閱讀

總結(jié)

持續(xù)集成(CI)是一種開發(fā)實(shí)踐,其中開發(fā)人員經(jīng)常(最好每天幾次)將代碼集成到共享存儲庫中。然后可以通過自動(dòng)構(gòu)建和自動(dòng)測試來驗(yàn)證每個(gè)集成。盡管自動(dòng)化測試不是嚴(yán)格意義上的CI的一部分,但通常隱含了它。 定期集成的主要好處之一是,您可以快速檢測到錯(cuò)誤并更輕松地定位它們。由于引入的每個(gè)更改通常很小,因此可以快速查明引入缺陷的特定更改。 近年來,CI已成為軟件開發(fā)的最佳實(shí)踐,并遵循一系列關(guān)鍵原則。其中包括版本控制,構(gòu)建自動(dòng)化和自動(dòng)化測試。 此外,持續(xù)部署和持續(xù)交付已成為最佳實(shí)踐,可讓您隨時(shí)隨地部署應(yīng)用程序,甚至在每次引入新更改時(shí)甚至將主代碼庫自動(dòng)推入生產(chǎn)環(huán)境。這使您的團(tuán)隊(duì)可以快速行動(dòng),同時(shí)保持可以自動(dòng)檢查的高質(zhì)量標(biāo)準(zhǔn)。

d7079c34-11db-11ee-962d-dac502259ad0.png

CI/CD應(yīng)用場景:

開發(fā)人員將本地代碼上傳gitlab版本服務(wù)器

jenkins通過webhook插件自動(dòng)到gitlab服務(wù)器拉取最新代碼

通過docker-maven-plugin插件自動(dòng)編譯代碼

將自定義鏡像上傳docker私服倉庫

k8s集群自動(dòng)拉取最新版本鏡像

自動(dòng)化部署整個(gè)項(xiàng)目

用戶通過nginx負(fù)載均衡訪問整個(gè)項(xiàng)目

d726816c-11db-11ee-962d-dac502259ad0.png

什么是持續(xù)集成、持續(xù)交付和持續(xù)部署 ?

持續(xù)集成(CI)

是一種開發(fā)實(shí)踐,要求開發(fā)人員每天多次將代碼集成到共享存儲庫中(GitLab)。

開發(fā)人員通常使用稱為CI Server的工具來進(jìn)行構(gòu)建和集成。CI要求自檢代碼。這是用于自我測試以確保其按預(yù)期工作的代碼,這些測試通常稱為單元測試。集成代碼后,當(dāng)所有單元測試通過時(shí),將得一個(gè)最新的的代碼版本。這表明他們已經(jīng)驗(yàn)證了自己的更改已成功集成到一起,并且代碼按測試期望的那樣工作。

d742a180-11db-11ee-962d-dac502259ad0.png

從圖例上來看持續(xù)集成的流程就十分清晰了:

開發(fā)人員提交代碼到 Source Repository (源代碼倉庫),并通過 git hook 等

觸發(fā) CI Server(持續(xù)集成服務(wù)器)的相關(guān)功能。執(zhí)行 編譯 -> 測試 -> 輸出結(jié)果的流程,

向開發(fā)人員反饋結(jié)果的 report

可以看出,持續(xù)集成的核心在于確保新增的代碼能夠與原先代碼正確的集成。與后續(xù)要介紹的持續(xù)交付以及持續(xù)部署,其最主要的差別也就在于其目標(biāo)不同。

連續(xù)交付(CD)

是一種軟件工程方法,團(tuán)隊(duì)可以在短時(shí)間內(nèi)將軟件部署到生產(chǎn)環(huán)境,確保在任何時(shí)候可靠地發(fā)布軟件,并且在發(fā)布軟件時(shí)可以手動(dòng)進(jìn)行。

持續(xù)交付意味著每次更改代碼,集成并構(gòu)建代碼時(shí),他們還將在與生產(chǎn)非常相似的環(huán)境中自動(dòng)測試該代碼。我們將此部署到不同環(huán)境并在不同環(huán)境上進(jìn)行測試的過程稱為部署管道。部署管道通常具有開發(fā)環(huán)境,測試環(huán)境和過渡環(huán)境,但是這些階段因團(tuán)隊(duì),產(chǎn)品和組織而異。

與持續(xù)集成相比,持續(xù)交付的側(cè)重點(diǎn)在于交付,其核心對象不在于代碼,而在于可交付的產(chǎn)物。由于持續(xù)集成僅僅針對于新舊代碼的集成過程執(zhí)行了一定的測試,其變動(dòng)到持續(xù)交付后還需要一些額外的流程。

d761439c-11db-11ee-962d-dac502259ad0.png

可以看到,與持續(xù)集成 相比較,持續(xù)交付 添加了 Test -> Staging -> Production 的流程,也就是為新增的代碼添加了一個(gè)保證:確保新增的代碼在生產(chǎn)環(huán)境中是可用的。

在這一增加的流程中,Test 環(huán)節(jié)不僅僅包含基本的單元測試,還需要延伸到更為復(fù)雜的功能測試以及集成測試等。在這里,Staging 指的是 類生產(chǎn)環(huán)境 ,其盡可能的對真實(shí)的網(wǎng)絡(luò)拓?fù)洹?shù)據(jù)庫數(shù)據(jù)以及硬件設(shè)備等資源進(jìn)行模擬,從而為測試人員反饋代碼在生成環(huán)境中的可能表現(xiàn)。流程中每一個(gè)環(huán)節(jié)的執(zhí)行結(jié)果都會(huì)對開發(fā)人員進(jìn)行反饋,每一個(gè)出現(xiàn)的錯(cuò)誤都會(huì)導(dǎo)致版本的回滾。當(dāng)測試完畢確認(rèn)無誤之后,將由相關(guān)人員對其進(jìn)行手動(dòng)部署到生產(chǎn)環(huán)境。

持續(xù)部署

持續(xù)部署意味著:通過自動(dòng)化部署的手段將軟件功能頻繁的進(jìn)行交付。 在這種實(shí)踐中,團(tuán)隊(duì)負(fù)責(zé)人所做的每一項(xiàng)更改都通過了所有測試階段,并自動(dòng)投入生產(chǎn)。要實(shí)現(xiàn)連續(xù)部署,團(tuán)隊(duì)負(fù)責(zé)人首先需要進(jìn)行連續(xù)交付。

d781254a-11db-11ee-962d-dac502259ad0.png

可以看到,同持續(xù)交付相比 持續(xù)集成 的區(qū)別體現(xiàn)在對 Production 的自動(dòng)化。從開發(fā)人員提交代碼到編譯、測試、部署的全流程不需要人工的干預(yù),完全通過自動(dòng)化的方式執(zhí)行。這一策略加快了代碼提交到功能上線的速度,保證新的功能能夠第一時(shí)間部署到生產(chǎn)環(huán)境并被使用。

DevOps概述

介紹完了持續(xù)集成、持續(xù)交付和持續(xù)部署三大件,接下來在講講 DevOps。與三大件不同,DevOps 更偏向于一種對于文化氛圍的構(gòu)建。

DevOps 一詞本身是對于 development 以及 operation 兩個(gè)詞的混合,其目的在于縮短系統(tǒng)開發(fā)的生命周期,在這過程中發(fā)布特性、修復(fù)bug以及更新均被緊密的結(jié)合。

聽起來似乎有點(diǎn)玄乎,可以這樣理解:DevOps 也即是促使開發(fā)人員與運(yùn)維人員之間相互協(xié)作的文化。

DevOps 的概念似乎與持續(xù)交付的概念有些類似,兩者均旨在促進(jìn)開發(fā)與運(yùn)維之間的協(xié)作,但是實(shí)際上兩者差別很大:DevOps 更偏向于一種文化的構(gòu)建,在 DevOps 文化指導(dǎo)下,團(tuán)隊(duì)中將包含了具有不同技能的人員(開發(fā)、測試等),并通過自動(dòng)化測試與發(fā)布的手段,更快、更高質(zhì)量的生產(chǎn)軟件。

d7a01450-11db-11ee-962d-dac502259ad0.png

d7c2232e-11db-11ee-962d-dac502259ad0.png

在傳統(tǒng)的團(tuán)隊(duì)組織方式中,開發(fā)人員與運(yùn)維人員之間是割裂開的,軟件開發(fā)流程被分割為多個(gè)獨(dú)立環(huán)節(jié),分別由不同的人員執(zhí)行。這使得軟件開發(fā)過程中需要付出高昂的溝通成本,層層手動(dòng)的流程將大量的時(shí)間耗費(fèi)在了重復(fù)的勞動(dòng)中。

在 DevOps 的指導(dǎo)下,不同技能的人員處在同個(gè)團(tuán)隊(duì)中,為了一個(gè)共同的軟件開發(fā)目標(biāo)而工作,更好的協(xié)同工作與自動(dòng)化的手段能夠優(yōu)化整個(gè) Code -> Build -> Test -> Release -> Operate -> Code 的循環(huán)。這一理念看起來很美,用圖畫來說明就構(gòu)成了一個(gè)和諧友好的大圈。

DevOps文化通常與持續(xù)交付相關(guān)聯(lián),因?yàn)樗鼈兌贾荚谠鰪?qiáng)開發(fā)人員和運(yùn)營團(tuán)隊(duì)之間的協(xié)作,并且都使 用自動(dòng)流程來更快,更頻繁,更可靠地構(gòu)建,測試和發(fā)布軟件。這些都是像我們這樣的人想要的東西。盡管開發(fā)團(tuán)隊(duì)經(jīng)常沒有看到流程改進(jìn)的最直接好處,但CI,CD和DevOps對我們其他人來說卻有很多好處。簡而言之,我相信實(shí)踐CD并擁護(hù)DevOps文化的組織將更頻繁地向其客戶提供更有價(jià)值,更可靠的軟件。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 自動(dòng)化
    +關(guān)注

    關(guān)注

    29

    文章

    5578

    瀏覽量

    79280
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68612
  • devops
    +關(guān)注

    關(guān)注

    0

    文章

    114

    瀏覽量

    12025

原文標(biāo)題:一文教你分清持續(xù)集成,持續(xù)交付,持續(xù)部署

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    6.6持續(xù)集成交付

    軟件工程
    jf_75936199
    發(fā)布于 :2023年03月08日 00:43:50

    AliOS Things 持續(xù)集成(CI)系統(tǒng)介紹

    摘要: AliOS Things在快速的迭代進(jìn)化之中,如何保證提交的代碼質(zhì)量,并保證在各個(gè)硬件平臺上的穩(wěn)定性,是個(gè)非常大的挑戰(zhàn)。同時(shí)物聯(lián)網(wǎng)硬件碎片化,資源緊張,對持續(xù)集成(CI)系統(tǒng)也提出了特殊
    發(fā)表于 01-26 15:34

    什么樣的持續(xù)交付工具和平臺最適合你的組織?

    能力和靈活性不足。很多活動(dòng)都需要在些模型的概念下進(jìn)行。那么來聊聊吧你的組織規(guī)模如何,你在組織內(nèi)的角色是什么正在使用什么樣的持續(xù)交付工具鏈,又遇到什么問題是否使用了云平臺,你的工具鏈和云平臺的
    發(fā)表于 05-02 14:18

    有方法與XC8持續(xù)集成

    你好,有沒有種方法可以在個(gè)持續(xù)集成的環(huán)境中構(gòu)建些項(xiàng)目,比如GITLAB跑步者?這樣,我們將能夠自動(dòng)生成最新的通用XC版本的HEX文件。 以上來自于百度翻譯 以下為原文 Hell
    發(fā)表于 09-26 17:26

    介紹個(gè)RT-Thread進(jìn)行持續(xù)集成的容器化Linux環(huán)境

    RT-Thread Linux CI Environment個(gè)用于嵌入式實(shí)時(shí)操作系統(tǒng) RT-Thread 進(jìn)行持續(xù)集成的容器化環(huán)境。使用步驟:拉取并啟動(dòng)鏡像 maikebing
    發(fā)表于 07-28 10:51

    如何在持續(xù)集成開發(fā)流程中使用Jenkins和Docker?

    本指南介紹了如何在持續(xù)集成開發(fā)流程中使用Jenkins和Docker。 本指南的受眾是嵌入式軟件開發(fā)人員。在指南中,我們還討論了測試平臺的主題,強(qiáng)調(diào)了使用Arm Fast Model技術(shù)的虛擬硬件
    發(fā)表于 08-02 10:50

    在Jenkins管理的持續(xù)集成境引入Docker來優(yōu)化資源配置

    Jenkins是被廣泛應(yīng)用的持續(xù)集成、自動(dòng)化測試、持續(xù)部署的框架,甚至有些項(xiàng)目組順便將其用來做流程管理的工具。根據(jù)任務(wù)的多寡,Jenkins通常有兩種典型的部署方式。 單節(jié)點(diǎn)(Mast
    發(fā)表于 09-26 11:42 ?0次下載
    在Jenkins管理的<b class='flag-5'>持續(xù)集成</b>境引入Docker來優(yōu)化資源配置

    實(shí)例分析無線持續(xù)交付平臺 MCD 的實(shí)踐應(yīng)用

    。如果沒有個(gè)有效的無線持續(xù)交付平臺,很難實(shí)現(xiàn)大版本的集成發(fā)布在 3 天內(nèi)完成。而對比市場上開源的無線持續(xù)集成工具 Fastlane、Tes
    發(fā)表于 09-30 13:36 ?3次下載
    實(shí)例分析無線<b class='flag-5'>持續(xù)</b><b class='flag-5'>交付</b>平臺 MCD 的實(shí)踐應(yīng)用

    使用Docker實(shí)現(xiàn)持續(xù)集成

    本文轉(zhuǎn)載自《程序員》,謝絕轉(zhuǎn)載,更多精彩,請訂閱2016年《程序員》 持續(xù)集成(Continuous Integration,簡稱CI)作為先進(jìn)的項(xiàng)目實(shí)踐之,近年來逐漸受到國內(nèi)軟件公司的重視;但對
    發(fā)表于 10-10 10:26 ?0次下載
    使用Docker實(shí)現(xiàn)<b class='flag-5'>持續(xù)集成</b>

    jenkins持續(xù)集成原理

    本文詳細(xì)介紹了jenkins持續(xù)集成原理。持續(xù)集成就是為解決程序代碼提交質(zhì)量低,提交內(nèi)容導(dǎo)致原有系統(tǒng)的bug,按時(shí)或按需自動(dòng)編譯版本,自動(dòng)進(jìn)行自動(dòng)化測試。
    的頭像 發(fā)表于 02-06 11:43 ?4094次閱讀

    關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

    在實(shí)際的工程項(xiàng)目中,隨著項(xiàng)目和人員的擴(kuò)展,越來越多的開發(fā)人員會(huì)利用合適的代碼版本管理和持續(xù)集成工具進(jìn)行并行開發(fā)。Git、GitLab、Jenkins這個(gè)組合適用于任意大小規(guī)模的持續(xù)集成開發(fā)模式。持續(xù)集成也是敏捷開發(fā)的
    的頭像 發(fā)表于 09-12 09:10 ?2198次閱讀
    關(guān)于<b class='flag-5'>持續(xù)集成</b>與基于模型的設(shè)計(jì)的分析和應(yīng)用

    持續(xù)集成持續(xù)部署助于敏捷開發(fā)概念的出現(xiàn)

      由于數(shù)字世界的迅速擴(kuò)散和廣泛的可訪問性,軟件開發(fā)項(xiàng)目中傳統(tǒng)的時(shí)間框架和順序過程不再有效。這些有助于敏捷開發(fā)概念的出現(xiàn),例如測試自動(dòng)化、持續(xù)集成持續(xù)部署。
    的頭像 發(fā)表于 12-09 15:14 ?679次閱讀

    持續(xù)集成構(gòu)建狀態(tài)信號量開源硬件

    電子發(fā)燒友網(wǎng)站提供《持續(xù)集成構(gòu)建狀態(tài)信號量開源硬件.zip》資料免費(fèi)下載
    發(fā)表于 12-23 17:42 ?0次下載
    <b class='flag-5'>持續(xù)集成</b>構(gòu)建狀態(tài)信號量開源硬件

    高質(zhì)量持續(xù)集成:VectorCAST與Jenkins實(shí)戰(zhàn)指南

    持續(xù)集成(ContinuousIntegration,簡稱CI)是種軟件開發(fā)/測試方法。它要求開發(fā)及測試人員頻繁地將代碼提交到用于共享的開發(fā)分支中,經(jīng)過充分的測試和審查,然后通過自動(dòng)化的構(gòu)建和測試
    的頭像 發(fā)表于 09-28 08:27 ?1272次閱讀
    高質(zhì)量<b class='flag-5'>持續(xù)集成</b>:VectorCAST與Jenkins實(shí)戰(zhàn)指南

    INTEWORK—PET 汽車軟件持續(xù)集成平臺

    INTEWORK-PET-CI是經(jīng)緯恒潤自主研發(fā)的汽車軟件持續(xù)集成&持續(xù)交付平臺,在傳統(tǒng)的持續(xù)集成基礎(chǔ)上深化了研運(yùn)體化(DevOps)的概
    的頭像 發(fā)表于 01-19 11:04 ?595次閱讀
    INTEWORK—PET 汽車軟件<b class='flag-5'>持續(xù)集成</b>平臺