CI/CD

創(chuàng)作不易,請(qǐng)珍惜,之后會(huì)持續(xù)更新感局,不斷完善
個(gè)人比較喜歡做筆記和寫(xiě)總結(jié),畢竟好記性不如爛筆頭哈哈暂衡,這些文章記錄了我的IOS成長(zhǎng)歷程询微,希望能與大家一起進(jìn)步
溫馨提示:由于簡(jiǎn)書(shū)不支持目錄跳轉(zhuǎn),大家可通過(guò)command + F 輸入目錄標(biāo)題后迅速尋找到你所需要的內(nèi)容

目錄

  • 一狂巢、DevOps
  • 二拓提、Continuous Integration
  • 三、架構(gòu)師的日常
  • 四隧膘、關(guān)于旅行
  • 參考文獻(xiàn)

CI/CD 的出現(xiàn)改變了開(kāi)發(fā)人員和測(cè)試人員發(fā)布軟件的方式代态。從最初的瀑布模型, 到后來(lái)的敏捷開(kāi)發(fā)(Agile Development )疹吃, 再到今天的 DevOps蹦疑,這是現(xiàn)代開(kāi)發(fā)人員構(gòu)建出色產(chǎn)品的技術(shù)路線。 隨著 DevOps 的興起萨驶,出現(xiàn)了持續(xù)集成歉摧,持續(xù)交付(CI/CD)和持續(xù)部署的新方法, 而傳統(tǒng)的軟件開(kāi)發(fā)和交付方式在迅速變得過(guò)時(shí)腔呜。過(guò)去的敏捷時(shí)代里叁温, 大多數(shù)公司的軟件發(fā)布周期是每月、每季度甚至每年核畴;而在現(xiàn)在 DevOps 時(shí)代膝但,每周、每天甚至每天多次都是常態(tài)谤草。 當(dāng) SaaS 成為業(yè)界主流后尤其如此跟束,您可以輕松地動(dòng)態(tài)更新應(yīng)用程序, 而無(wú)需強(qiáng)迫用戶(hù)下載更新組件丑孩。很多時(shí)候冀宴,用戶(hù)甚至都不會(huì)注意到正在發(fā)生變化。

開(kāi)發(fā)團(tuán)隊(duì)通過(guò)軟件交付流水線(Pipeline)實(shí)現(xiàn)自動(dòng)化温学,以縮短交付周期略贮, 大多數(shù)團(tuán)隊(duì)都有自動(dòng)化流程來(lái)檢查代碼并部署到新環(huán)境。 我們一直在關(guān)注自動(dòng)化測(cè)試流程仗岖。 今天逃延,我們將介紹什么是 CI/CD ,以及現(xiàn)代軟件公司如何使用工具將部署代碼的流程自動(dòng)化箩帚。

一真友、DevOps

DevOpsDevelopmentOperations的組合,是一種方法論紧帕,是一組過(guò)程盔然、方法與系統(tǒng)的統(tǒng)稱(chēng),用于促進(jìn)應(yīng)用開(kāi)發(fā)是嗜、應(yīng)用運(yùn)維和質(zhì)量保障(QA)部門(mén)之間的溝通愈案、協(xié)作與整合。以期打破傳統(tǒng)開(kāi)發(fā)和運(yùn)營(yíng)之間的壁壘和鴻溝鹅搪。

DevOps是一種重視“軟件開(kāi)發(fā)人員(Dev)”和“IT運(yùn)維技術(shù)人員(Ops)”之間溝通合作的文化站绪、運(yùn)動(dòng)或慣例。通過(guò)自動(dòng)化“軟件交付”和“架構(gòu)變更”的流程丽柿,來(lái)使得構(gòu)建恢准、測(cè)試魂挂、發(fā)布軟件能夠更加地快捷、頻繁和可靠馁筐。具體來(lái)說(shuō)涂召,就是在軟件交付和部署過(guò)程中提高溝通與協(xié)作的效率,旨在更快敏沉、更可靠的的發(fā)布更高質(zhì)量的產(chǎn)品果正。

也就是說(shuō)DevOps是一組過(guò)程和方法的統(tǒng)稱(chēng),并不指代某一特定的軟件工具或軟件工具組合盟迟。各種工具軟件或軟件組合可以實(shí)現(xiàn)DevOps的概念方法秋泳。其本質(zhì)是一整套的方法論,而不是指某種或某些工具集合攒菠,與軟件開(kāi)發(fā)中設(shè)計(jì)到的OOP迫皱、AOP、IOC(或DI)等類(lèi)似要尔,是一種理論或過(guò)程或方法的抽象或代稱(chēng)舍杜。

在了解了什么是DevOps之后、我們來(lái)看看到底什么是CI/CD赵辕?CI/CD 是一種通過(guò)在應(yīng)用開(kāi)發(fā)階段引入自動(dòng)化來(lái)頻繁向客戶(hù)交付應(yīng)用的方法既绩。CI/CD 的核心概念是持續(xù)集成、持續(xù)交付和持續(xù)部署还惠。作為一個(gè)面向開(kāi)發(fā)和運(yùn)營(yíng)團(tuán)隊(duì)的解決方案饲握,CI/CD 主要針對(duì)在集成新代碼時(shí)所引發(fā)的問(wèn)題(亦稱(chēng):“集成地獄”)。

具體而言蚕键,CI/CD 可讓持續(xù)自動(dòng)化和持續(xù)監(jiān)控貫穿于應(yīng)用的整個(gè)生命周期(從集成和測(cè)試階段救欧,到交付和部署)。這些關(guān)聯(lián)的事務(wù)通常被統(tǒng)稱(chēng)為“CI/CD 管道”锣光,由開(kāi)發(fā)和運(yùn)維團(tuán)隊(duì)以敏捷方式協(xié)同支持“实。現(xiàn)在我們把CI/CD拆分開(kāi)、我們先來(lái)看看什么是CI誊爹?


二蹬刷、Continuous Integration

CI的英文名稱(chēng)是Continuous Integration,中文翻譯為:持續(xù)集成频丘。CI中办成,開(kāi)發(fā)人員將會(huì)頻繁地向主干提交代碼,這些新提交的代碼在最終合并到主干前搂漠,需要經(jīng)過(guò)編譯和自動(dòng)化測(cè)試流進(jìn)行驗(yàn)證迂卢。 持續(xù)集成(CI)是在源代碼變更后自動(dòng)檢測(cè)、拉取、構(gòu)建和(在大多數(shù)情況下)進(jìn)行單元測(cè)試的過(guò)程而克。持續(xù)集成的目標(biāo)是快速確保開(kāi)發(fā)人員新提交的變更是好的靶壮,并且適合在代碼庫(kù)中進(jìn)一步使用。CI的流程執(zhí)行和理論實(shí)踐讓我們可以確定新代碼和原有代碼能否正確地集成在一起拍摇。

通俗點(diǎn)講就是:通過(guò)持續(xù)集成亮钦, 開(kāi)發(fā)人員能夠在任何時(shí)候多次向倉(cāng)庫(kù)提交作品,而不是獨(dú)立地開(kāi)發(fā)每個(gè)功能模塊并在開(kāi)發(fā)周期結(jié)束時(shí)一一提交充活。這里的一個(gè)重要思想就是讓開(kāi)發(fā)人員更快更、頻繁地做到這一點(diǎn)蜡娶,從而降低集成的開(kāi)銷(xiāo)混卵。 實(shí)際情況中,開(kāi)發(fā)人員在集成時(shí)經(jīng)常會(huì)發(fā)現(xiàn)新代碼和已有代碼存在沖突窖张。 如果集成較早并更加頻繁幕随,那么沖突將更容易解決且執(zhí)行成本更低。當(dāng)然宿接,這里也有一些權(quán)衡赘淮,這個(gè)流程不提供額外的質(zhì)量保障。 事實(shí)上睦霎,許多組織發(fā)現(xiàn)這樣的集成方式開(kāi)銷(xiāo)更大梢卸,因?yàn)樗鼈円蕾?lài)人工確保新代碼不會(huì)引起新的 bug 或者破壞現(xiàn)有代碼。 為了減少集成期間的摩擦副女,持續(xù)集成依賴(lài)于測(cè)試套件和自動(dòng)化測(cè)試蛤高。 然而,要認(rèn)識(shí)到自動(dòng)化測(cè)試和持續(xù)測(cè)試是完全不同的這一點(diǎn)很重要碑幅。

CI 的目標(biāo)是將集成簡(jiǎn)化成一個(gè)簡(jiǎn)單戴陡、易于重復(fù)的日常開(kāi)發(fā)任務(wù), 這樣有助于降低總體的構(gòu)建成本并在開(kāi)發(fā)周期的早期發(fā)現(xiàn)缺陷沟涨。 要想有效地使用 CI 必須轉(zhuǎn)變開(kāi)發(fā)團(tuán)隊(duì)的習(xí)慣恤批,要鼓勵(lì)頻繁迭代構(gòu)建, 并且在發(fā)現(xiàn) bug 的早期積極解決裹赴。


三喜庞、CD

這里的CD可對(duì)應(yīng)多個(gè)英文名稱(chēng),持續(xù)交付Continuous Delivery和持續(xù)部署Continuous Deployment篮昧。下面我們分別來(lái)看看上面是持續(xù)交付和持續(xù)部署赋荆。

持續(xù)交付(CD)

持續(xù)交付(CD)實(shí)際上是 CI 的擴(kuò)展,其中軟件交付流程進(jìn)一步自動(dòng)化懊昨,以便隨時(shí)輕松地部署到生成環(huán)境中窄潭。 成熟的持續(xù)交付方案也展示了一個(gè)始終可部署的代碼庫(kù)。使用 CD 后,軟件發(fā)布將成為一個(gè)沒(méi)有任何緊張感的例行事件嫉你。 開(kāi)發(fā)團(tuán)隊(duì)可以在日常開(kāi)發(fā)的任何時(shí)間進(jìn)行產(chǎn)品級(jí)的發(fā)布月帝,而不需要詳細(xì)的發(fā)布方案或者特殊的后期測(cè)試。

完成 CI 中構(gòu)建及單元測(cè)試和集成測(cè)試的自動(dòng)化流程后幽污,持續(xù)交付可自動(dòng)將已驗(yàn)證的代碼發(fā)布到存儲(chǔ)庫(kù)嚷辅。為了實(shí)現(xiàn)高效的持續(xù)交付流程,務(wù)必要確保 CI 已內(nèi)置于開(kāi)發(fā)管道距误。持續(xù)交付的目標(biāo)是擁有一個(gè)可隨時(shí)部署到生產(chǎn)環(huán)境的代碼庫(kù)簸搞。

在持續(xù)交付中,每個(gè)階段(從代碼更改的合并准潭,到生產(chǎn)就緒型構(gòu)建版本的交付)都涉及測(cè)試自動(dòng)化和代碼發(fā)布自動(dòng)化趁俊。在流程結(jié)束時(shí),運(yùn)維團(tuán)隊(duì)可以快速刑然、輕松地將應(yīng)用部署到生產(chǎn)環(huán)境中或發(fā)布給最終使用的用戶(hù)寺擂。

CD 集中依賴(lài)于部署流水線,團(tuán)隊(duì)通過(guò)流水線自動(dòng)化測(cè)試和部署過(guò)程泼掠。此流水線是一個(gè)自動(dòng)化系統(tǒng)怔软, 可以針對(duì)構(gòu)建執(zhí)行一組漸進(jìn)的測(cè)試套件。CD 具有高度的自動(dòng)化择镇,并且在一些云計(jì)算環(huán)境中也易于配置挡逼。在流水線的每個(gè)階段,如果構(gòu)建無(wú)法通過(guò)關(guān)鍵測(cè)試會(huì)向團(tuán)隊(duì)發(fā)出警報(bào)沐鼠。否則挚瘟,將繼續(xù)進(jìn)入下一個(gè)測(cè)試, 并在連續(xù)通過(guò)測(cè)試后自動(dòng)進(jìn)入下一個(gè)階段饲梭。流水線的最后一個(gè)部分會(huì)將構(gòu)建部署到和生產(chǎn)環(huán)境等效的環(huán)境中乘盖。 這是一個(gè)整體的過(guò)程,因?yàn)闃?gòu)建憔涉、部署和環(huán)境都是一起執(zhí)行和測(cè)試的订框,它能讓構(gòu)建在實(shí)際的生產(chǎn)環(huán)境可部署和可驗(yàn)證。

持續(xù)部署(CD)

持續(xù)部署擴(kuò)展了持續(xù)交付兜叨,以便軟件構(gòu)建在通過(guò)所有測(cè)試時(shí)自動(dòng)部署穿扳。在這樣的流程中, 不需要人為決定何時(shí)及如何投入生產(chǎn)環(huán)境。CI/CD 系統(tǒng)的最后一步將在構(gòu)建后的組件/包退出流水線時(shí)自動(dòng)部署跪但。 此類(lèi)自動(dòng)部署可以配置為快速向客戶(hù)分發(fā)組件履羞、功能模塊或修復(fù)補(bǔ)丁,并準(zhǔn)確說(shuō)明當(dāng)前提供的內(nèi)容忆首。采用持續(xù)部署的組織可以將新功能快速傳遞給用戶(hù)爱榔,得到用戶(hù)對(duì)于新版本的快速反饋,并且可以迅速處理任何明顯的缺陷唇聘。 用戶(hù)對(duì)無(wú)用或者誤解需求的功能的快速反饋有助于團(tuán)隊(duì)規(guī)劃投入,避免將精力集中于不容易產(chǎn)生回報(bào)的地方夭拌。

隨著 DevOps 的發(fā)展桶现,新的用來(lái)實(shí)現(xiàn)CI/CD流水線的自動(dòng)化工具也在不斷涌現(xiàn)。這些工具通常能與各種開(kāi)發(fā)工具配合, 包括像 GitHub 這樣的代碼倉(cāng)庫(kù)和 Jira 這樣的 bug 跟蹤工具。此外筒繁,隨著 SaaS 這種交付方式變得更受歡迎修己, 許多工具都可以在現(xiàn)代開(kāi)發(fā)人員運(yùn)行應(yīng)用程序的云環(huán)境中運(yùn)行砂豌,例如 GCP 和 AWS。但是對(duì)于一個(gè)成熟的CI/CD管道(Pipeline)來(lái)說(shuō),最后的階段是持續(xù)部署荸镊。作為持續(xù)交付——自動(dòng)將生產(chǎn)就緒型構(gòu)建版本發(fā)布到代碼存儲(chǔ)庫(kù)——的延伸,持續(xù)部署可以自動(dòng)將應(yīng)用發(fā)布到生產(chǎn)環(huán)境屎暇。目前最受歡迎的自動(dòng)化工具是 Jenkins根悼。

持續(xù)部署意味著所有的變更都會(huì)被自動(dòng)部署到生產(chǎn)環(huán)境中凶异。持續(xù)交付意味著所有的變更都可以被部署到生產(chǎn)環(huán)境中,但是出于業(yè)務(wù)考慮挤巡,可以選擇不部署唠帝。如果要實(shí)施持續(xù)部署,必須先實(shí)施持續(xù)交付玄柏。持續(xù)交付并不是指軟件每一個(gè)改動(dòng)都要盡快部署到產(chǎn)品環(huán)境中,它指的是任何的代碼修改都可以在任何時(shí)候?qū)嵤┎渴鹛3掷m(xù)交付表示的是一種能力粪摘,而持續(xù)部署表示的則一種方式;持續(xù)部署是持續(xù)交付的最高階段绍坝。


四徘意、Agile Development

最后我們?cè)賮?lái)看看上面是敏捷開(kāi)發(fā),這個(gè)稱(chēng)呼似乎還沒(méi)有所謂的簡(jiǎn)稱(chēng)轩褐,而且這個(gè)稱(chēng)呼似乎在國(guó)內(nèi)被濫用了椎咧。敏捷開(kāi)發(fā)著重于一種開(kāi)發(fā)的思路,擁抱變化和快速迭代把介。如何實(shí)現(xiàn)敏捷開(kāi)發(fā)勤讽,目前似乎尚沒(méi)有完善的工具鏈,更多的是一種概念性拗踢,調(diào)侃的說(shuō)法“既想馬爾跑得快脚牍,又想馬兒不吃草”的另外一種說(shuō)法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載巢墅,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者诸狭。
  • 序言:七十年代末券膀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子驯遇,更是在濱河造成了極大的恐慌芹彬,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叉庐,死亡現(xiàn)場(chǎng)離奇詭異舒帮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)眨唬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)会前,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人匾竿,你說(shuō)我怎么就攤上這事瓦宜。” “怎么了岭妖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵临庇,是天一觀的道長(zhǎng)蠕蚜。 經(jīng)常有香客問(wèn)我么夫,道長(zhǎng),這世上最難降的妖魔是什么哪工? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任斋攀,我火速辦了婚禮已卷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淳蔼。我一直安慰自己侧蘸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布鹉梨。 她就那樣靜靜地躺著讳癌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪存皂。 梳的紋絲不亂的頭發(fā)上晌坤,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音旦袋,去河邊找鬼骤菠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛疤孕,可吹牛的內(nèi)容都是我干的娩怎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胰柑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼截亦!你這毒婦竟也來(lái)了爬泥?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤崩瓤,失蹤者是張志新(化名)和其女友劉穎袍啡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體却桶,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡境输,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颖系。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗅剖。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嘁扼,靈堂內(nèi)的尸體忽然破棺而出信粮,到底是詐尸還是另有隱情,我是刑警寧澤趁啸,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布强缘,位于F島的核電站,受9級(jí)特大地震影響不傅,放射性物質(zhì)發(fā)生泄漏旅掂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一访娶、第九天 我趴在偏房一處隱蔽的房頂上張望商虐。 院中可真熱鬧,春花似錦崖疤、人聲如沸称龙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至痴柔,卻和暖如春沦偎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咳蔚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工豪嚎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谈火。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓侈询,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親糯耍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扔字,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容