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

        共 4244字,需瀏覽 9分鐘

         ·

        2021-09-07 17:07

        開(kāi)課通知重磅消息 | 2021年最新全棧測(cè)試開(kāi)發(fā)技能實(shí)戰(zhàn)指南(第2期)



        1
        持續(xù)集成


        首先是 WiKi 給出的定義:

        continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day.

        持續(xù)集成的含義為:頻繁的(一天多次的)將所有開(kāi)發(fā)者的工作合并到主干上。

        以圖例說(shuō)明持續(xù)集成的流程:


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

        • 開(kāi)發(fā)人員提交代碼到 Source Repository (源代碼倉(cāng)庫(kù)),并通過(guò) git hook 等

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

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


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


        不過(guò)持續(xù)集成的流程還存在一定的異議:上圖所示的流程為 Build -> Test,在阮老師的教程里頭是 Test -> Build。不過(guò),持續(xù)集成本身只不過(guò)是一種軟件工程的方法或者策略,其并不規(guī)定具體的實(shí)現(xiàn)。在實(shí)際的應(yīng)用中,還是需要結(jié)合具體的開(kāi)發(fā)語(yǔ)言或者工具來(lái)定。



        2
        持續(xù)集成的優(yōu)勢(shì)


        和我們一直在使用的 階段集成(完成一個(gè)階段的開(kāi)發(fā)后執(zhí)行代碼的集成) 相比, 持續(xù)集成 的策略能夠?yàn)槲覀儙?lái)哪些好處呢?


        • 易于定位錯(cuò)誤:每一次的代碼集成都需要執(zhí)行相關(guān)的測(cè)試工作,持續(xù)集成頻繁的集成次數(shù)天然的將復(fù)雜的代碼邏輯切割為了小塊,也就使得每一次測(cè)試中遇到的錯(cuò)誤能夠更加容易的被定位;

        • 易于控制開(kāi)發(fā)流程:更為細(xì)致的工作提交也就意味著更容易判斷當(dāng)前的工作進(jìn)度,這對(duì)于管理者規(guī)劃開(kāi)發(fā)流程而言提供了一個(gè)有效的參考,同時(shí)也為開(kāi)發(fā)人員省下了匯報(bào)工作的時(shí)間;

        • 易于CodeReview:對(duì)于大塊工作的切分自然也有助于做 CodeReview;

        • 易于減少不必要的工作:build 以及 test 過(guò)程的自動(dòng)化可以為你節(jié)約一大票的時(shí)間,從而投入到有價(jià)值的工作中去。



        3
        持續(xù)交付


        同樣,以 WiKi 的定義開(kāi)頭:

        Continuous delivery (CD or CDE) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time and, when releasing the software, doing so manually.

        持續(xù)交付 指的是:一種能夠使得軟件在較短的循環(huán)中可靠的發(fā)布的軟件工程方法。

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

        仍然以圖例說(shuō)明:


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

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



        4
        持續(xù)部署


        照慣例 Wiki 開(kāi)頭:

        Continuous deployment (CD) is a software engineering approach in which software functionalities are delivered frequently through automated deployments.

        持續(xù)部署 意味著:通過(guò)自動(dòng)化部署的手段將軟件功能頻繁的進(jìn)行交付。

        與持續(xù)交付以及持續(xù)集成相比,持續(xù)部署強(qiáng)調(diào)了通過(guò) automated deployment 的手段,對(duì)新的軟件功能進(jìn)行集成。


        上圖例說(shuō)明:


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



        5
        DevOps


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


        還是搬出 Wiki:

        DevOps (a clipped compound of “development” and “operations”) is a software development methodology that combines software development (Dev) with information technology operations (Ops). The goal of DevOps is to shorten the systems development life cycle while also delivering features, fixes, and updates frequently in close alignment with business objectives.

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


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


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


        以圖為例:

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


        在 DevOps 的指導(dǎo)下,不同技能的人員處在同個(gè)團(tuán)隊(duì)中,為了一個(gè)共同的軟件開(kāi)發(fā)目標(biāo)而工作,更好的協(xié)同工作與自動(dòng)化的手段能夠優(yōu)化整個(gè) Code -> Build -> Test -> Release -> Operate -> Code 的循環(huán)。這一理念看起來(lái)很美,用圖畫(huà)來(lái)說(shuō)明就構(gòu)成了一個(gè)和諧友好的大圈,不過(guò)在實(shí)際應(yīng)用中也許會(huì)遇到不少問(wèn)題,例如不同技能人員之間相互溝通的額外開(kāi)銷(xiāo)、團(tuán)隊(duì)組織形式改變后為管理所帶來(lái)的困難等等。這些問(wèn)題大概等到真正將 DevOps 在開(kāi)發(fā)過(guò)程中開(kāi)展來(lái)才能做解答了。



        6
        總結(jié)


        我對(duì)于 持續(xù)集成、 持續(xù)交付 和 持續(xù)部署 三者的理解是:

        • 持續(xù)集成 是三者中最簡(jiǎn)單的,同時(shí)也是開(kāi)銷(xiāo)最低的。由于不需要類(lèi)生產(chǎn)環(huán)境的配合,測(cè)試環(huán)境也可以僅支持單元測(cè)試的執(zhí)行,使得持續(xù)集成的實(shí)現(xiàn)是最為便宜的??紤]到現(xiàn)實(shí)開(kāi)發(fā)過(guò)程的種種限制,向資源與成本做妥協(xié),舍棄持續(xù)交付或者持續(xù)部署這樣看起來(lái)很美的方法,退而轉(zhuǎn)向持續(xù)集成也是很合理的選擇;

        • 持續(xù)交付 面向開(kāi)發(fā)初期或者軟件穩(wěn)定性或者安全性要求較高的領(lǐng)域,新增代碼提交、編譯、測(cè)試等一系列環(huán)節(jié)均可以通過(guò)自動(dòng)化工具完成,很好的節(jié)約了人力資源的同時(shí),還對(duì)新增代碼的功能進(jìn)行了有效的保障。在手動(dòng)執(zhí)行的部署環(huán)節(jié),還可以添加在執(zhí)行完畢標(biāo)準(zhǔn)測(cè)試之外的可能需求,以保證發(fā)布功能的可靠;

        • 持續(xù)部署 面向穩(wěn)定的發(fā)布上線后的功能更新。自動(dòng)的,無(wú)需人工干預(yù)的部署可以保證新增功能第一時(shí)間被發(fā)布到生產(chǎn)環(huán)境中,確保其盡快的被用戶所使用。其與持續(xù)交付相比,就在于其功能可靠性與功能及時(shí)性的側(cè)重不同。


        那么,在哪里能買(mǎi)得到呢?該怎么對(duì)這些方法進(jìn)行使用呢?

        這就需要相關(guān)工具的配合協(xié)作了,以前端開(kāi)發(fā)為例:

        • 持續(xù)集成的工具有:Travis CI、Circle CI、jenkins 等

        • 測(cè)試框架有:jasmine、mocha 等

        • 測(cè)試運(yùn)行器有:karma 等

        • 構(gòu)建工具有:grunt、gulp 等

        • balabala…


        涉及的工具很多,需要大家在工作中花點(diǎn)時(shí)間琢磨一下。


        PS:  由狂師老師授課主講的「全棧測(cè)試開(kāi)發(fā)技能訓(xùn)練營(yíng)」二期開(kāi)課了,課程非常值得推薦,課程大綱可閱:重磅消息 | 2021年最新全棧測(cè)試開(kāi)發(fā)技能實(shí)戰(zhàn)指南(第2期)


        推薦閱讀
        重磅消息 | 2021年最新全棧測(cè)試開(kāi)發(fā)技能實(shí)戰(zhàn)指南(第2期)

        官宣了,測(cè)試大神必備的"三把利劍"!

        測(cè)試開(kāi)發(fā):推薦一款阿里最新 Python 自動(dòng)化開(kāi)源工具!

        月薪40K+銀行測(cè)試經(jīng)理,自動(dòng)化測(cè)試實(shí)踐經(jīng)驗(yàn)分享

        超詳細(xì),自動(dòng)化測(cè)試接入Jenkins+Sonar質(zhì)量門(mén)禁實(shí)踐


        END

        所有原創(chuàng)文章
        第一時(shí)間發(fā)布至此公眾號(hào)「測(cè)試開(kāi)發(fā)技術(shù)」

        長(zhǎng)按二維碼/微信掃碼  添加作者


        瀏覽 70
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 潘金莲和武松做爰h | 91人妻无码专区A片奶水牛牛 | 水蜜桃在线视频 | 我想操逼电影在线观看 | 国产免费A级成人片在线观看 |