CICD與DevOps
文章聲明,本文選自網(wǎng)上關(guān)于CICD與DevOps的講解綜合,如有侵權(quán),聯(lián)系刪除
什么是CI/CD
什么是持續(xù)集成(CI-Continuous integration)
持續(xù)集成是指多名開發(fā)者在開發(fā)不同功能代碼的過程當(dāng)中,可以頻繁的將代碼行合并到一起并切相互不影響工作。
什么是持續(xù)部署(CD-continuous deployment)
是基于某種工具或平臺(tái)實(shí)現(xiàn)代碼自動(dòng)化的構(gòu)建、測試和部署到線上環(huán)境以實(shí)現(xiàn)交付高質(zhì)量的產(chǎn)品,持續(xù)部署在某種程度上代表了一個(gè)開發(fā)團(tuán)隊(duì)的更新迭代速率。
什么是持續(xù)交付(Continuous Delivery)
持續(xù)交付是在持續(xù)部署的基礎(chǔ)之上,將產(chǎn)品交付到線上環(huán)境,因此持續(xù)交付是產(chǎn)品價(jià)值的一種交付,是產(chǎn)品價(jià)值的一種盈利的實(shí)現(xiàn)。
持續(xù)集成 CI(Continuous Integration)
在傳統(tǒng)軟件開發(fā)過程中,集成通常發(fā)生在每個(gè)人都完成了各自的工作之后。在項(xiàng)目尾聲階段,通常集成還要痛苦的花費(fèi)數(shù)周或者數(shù)月的時(shí)間來完成。持續(xù)集成是一個(gè)將集成提前至開發(fā)周期的早期階段的實(shí)踐方式,讓構(gòu)建、測試和集成代碼更經(jīng)常反復(fù)地發(fā)生。
開發(fā)人員通常使用一種叫做CI Server
的工具來做構(gòu)建和集成。持續(xù)集成要求史蒂夫和安妮能夠自測代碼。分別測試各自代碼來保證它能夠正常工作,這些測試通常被稱為單元測試(Unit tests)。
代碼集成以后,當(dāng)所有的單元測試通過,史蒂夫和安妮就得到了一個(gè)綠色構(gòu)建(Green Build)。這表明他們已經(jīng)成功地集成在一起,代碼正按照測試預(yù)期地在工作。然而,盡管集成代碼能夠成功地一起工作了,它仍未為生產(chǎn)做好準(zhǔn)備,因?yàn)樗鼪]有在類似生產(chǎn)的環(huán)境中測試和工作。
CI是需要對(duì)開發(fā)人員每次的代碼提交進(jìn)行構(gòu)建測試驗(yàn)證。確定每次提交的代碼都是可以正常編譯測試通過的。在沒有持續(xù)集成服務(wù)器的時(shí)候,我們可以寫一個(gè)程序來監(jiān)聽版本控制系統(tǒng)的狀態(tài),當(dāng)出現(xiàn)了push
動(dòng)作則觸發(fā)相應(yīng)的腳本運(yùn)行編譯構(gòu)建等步驟?,F(xiàn)在有了專業(yè)的持續(xù)集成服務(wù)器后,我們借助持續(xù)集成服務(wù)器來實(shí)現(xiàn)版本控制系統(tǒng)中代碼提交觸發(fā)構(gòu)建測試等驗(yàn)證步驟。
持續(xù)合并開發(fā)人員正在開發(fā)編寫的所有代碼的一種做法。通常一天內(nèi)進(jìn)行多次合并和提交代碼,從存儲(chǔ)庫或生產(chǎn)環(huán)境中進(jìn)行構(gòu)建和自動(dòng)化測試,以確保沒有集成問題并及早發(fā)現(xiàn)任何問題。
持續(xù)交付 CD (Continuous Delivery)
Continuous Delivery (CD) 持續(xù)交付是持續(xù)集成的延伸,將集成后的代碼部署到類生產(chǎn)環(huán)境,確??梢砸钥沙掷m(xù)的方式快速向客戶發(fā)布新的更改。如果代碼沒有問題,可以繼續(xù)手工部署到生產(chǎn)環(huán)境中。
「持續(xù)交付CD」:是基于持續(xù)集成的基礎(chǔ)上,將集成后的代碼自動(dòng)化的發(fā)布到各個(gè)環(huán)境中測試(DEV TEST UAT STAG),確定可以發(fā)布生產(chǎn)版本。這里我們可以借用制品庫實(shí)現(xiàn)制品的管理,根據(jù)環(huán)境類型創(chuàng)建對(duì)應(yīng)的制品庫。「一次構(gòu)建,到處運(yùn)行」。
- 開發(fā)環(huán)境發(fā)布:我們可以將開發(fā)環(huán)境產(chǎn)出的制品部署進(jìn)行測試,沒有問題后上傳到測試環(huán)境的制品庫中。
- 測試環(huán)境發(fā)布:此時(shí)通知測試人員可以進(jìn)行測試環(huán)境發(fā)布測試,獲取測試環(huán)境制品庫中的制品,發(fā)布到測試環(huán)境驗(yàn)證。驗(yàn)證通過將制品上傳到預(yù)生產(chǎn)環(huán)境制品庫。
- 預(yù)生產(chǎn)環(huán)境發(fā)布:獲取預(yù)生產(chǎn)環(huán)境制品,進(jìn)行部署測試。測試成功后可以將制品上傳到生產(chǎn)庫中。
- 手動(dòng)部署生產(chǎn)環(huán)境。
持續(xù)交付是超越持續(xù)集成的一步。不僅會(huì)在推送到代碼庫的每次代碼更改時(shí)都進(jìn)行構(gòu)建和測試,而且,作為附加步驟,即使部署是手動(dòng)觸發(fā)的,它也可以連續(xù)部署。此方法可確保自動(dòng)檢查代碼,但需要人工干預(yù)才能從策略上手動(dòng)觸發(fā)更改的部署。
持續(xù)部署 CD(Continuous Deploy)
如果真的想獲得持續(xù)交付的好處,應(yīng)該盡早部署到生產(chǎn)環(huán)境,以確??梢孕∨伟l(fā)布,在發(fā)生問題時(shí)可以輕松排除故障。于是有了持續(xù)部署。
通??梢酝ㄟ^將更改自動(dòng)推送到發(fā)布系統(tǒng)來隨時(shí)將軟件發(fā)布到生產(chǎn)環(huán)境中。持續(xù)部署 會(huì)更進(jìn)一步,并自動(dòng)將更改推送到生產(chǎn)中。類似于持續(xù)交付,持續(xù)部署也是超越持續(xù)集成的進(jìn)一步。不同之處在于,您無需將其手動(dòng)部署,而是將其設(shè)置為自動(dòng)部署。部署您的應(yīng)用程序完全不需要人工干預(yù)。
「持續(xù)部署CD」:是基于持續(xù)交付的基礎(chǔ)上,將在各個(gè)環(huán)境經(jīng)過測試的應(yīng)用自動(dòng)化部署到生產(chǎn)環(huán)境。其實(shí)各個(gè)環(huán)境的發(fā)布過程都是一樣的。應(yīng)用發(fā)布到生產(chǎn)環(huán)境后,我們需要對(duì)應(yīng)用進(jìn)行健康檢查、添加應(yīng)用的監(jiān)控項(xiàng)、 應(yīng)用日志管理。
我們通常將這個(gè)在不同環(huán)境發(fā)布和測試的過程叫做部署流水線, 持續(xù)部署是在持續(xù)交付的基礎(chǔ)上,把部署到生產(chǎn)環(huán)境的過程自動(dòng)化。
DevOps
什么是DevOps
DevOps(Development和Operations組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。一些國際組織對(duì)其定義如下:
DevOps強(qiáng)調(diào)對(duì)應(yīng)用進(jìn)行快速、小規(guī)模、可迭代的開發(fā)和部署,以更好地應(yīng)對(duì)和滿足客戶的需求。它要求進(jìn)行文化的轉(zhuǎn)變,即將開發(fā)和運(yùn)維只能作為一個(gè)合作的整體來看待,注重提高業(yè)務(wù)價(jià)值,旨在精簡整個(gè)IT價(jià)值鏈。
從定義來看,其實(shí)devops就是為了讓開發(fā)、運(yùn)維和QA可以高效協(xié)作的流程。(可以把DevOps看作開發(fā)、技術(shù)運(yùn)營和質(zhì)量保障(QA)三者的交集)
DevOps是一套實(shí)踐框架,包含了精益、敏捷的理念,各種持續(xù)集成和持續(xù)交付的職能,以及構(gòu)建流水線的工具。它著眼于項(xiàng)目的實(shí)踐,在實(shí)踐中強(qiáng)調(diào)以業(yè)務(wù)價(jià)值來統(tǒng)一所有工作目標(biāo),這個(gè)目標(biāo)是不同的團(tuán)隊(duì)打破原有的組織考核壁壘,進(jìn)行合作和溝通的基礎(chǔ)。它的核心思想是把所有的IT交付和運(yùn)維服務(wù)團(tuán)隊(duì)統(tǒng)一起來,圍繞一個(gè)統(tǒng)一的業(yè)務(wù)價(jià)值目標(biāo)及業(yè)務(wù)交付范圍加強(qiáng)溝通,通過頻繁、快速地迭代交付和反饋,達(dá)到加快交付速度和提高交付質(zhì)量的目的。
如果將IT系統(tǒng)提供的業(yè)務(wù)服務(wù)作為一個(gè)交付的產(chǎn)品來看,就存在一條在IT軟件開發(fā)和交付領(lǐng)域等形成的流水線。為了建設(shè)這樣一條流水線,需要弄清楚以下問題:
- 流水線的內(nèi)容是什么?它的起點(diǎn)在哪?終點(diǎn)在哪?
- 如何搭建這條流水線?
- 如何管理這條流水線?
DevOps核心理念
DevOps的生命周期如下圖所示:
在其生命周期中,包含以下幾個(gè)核心理念:
實(shí)現(xiàn)組織目標(biāo)
技術(shù)人員所做的軟件系統(tǒng)是為業(yè)務(wù)部門的業(yè)務(wù)發(fā)展服務(wù)的,此是將所有IT交付團(tuán)隊(duì)統(tǒng)一起來的共同目標(biāo)和原始驅(qū)動(dòng)力。只要對(duì)比一下自己團(tuán)隊(duì)的KPI和業(yè)務(wù)目標(biāo)的關(guān)系,就能發(fā)現(xiàn)傳統(tǒng)的分隔式項(xiàng)目交付管理是多么官僚和浪費(fèi)。所以,DevOps流水線包含開發(fā)、測試、部署和運(yùn)維等整個(gè)項(xiàng)目過程,這些直接關(guān)系到最終的業(yè)務(wù)價(jià)值的實(shí)現(xiàn),因此必須作為一個(gè)整體進(jìn)行管理。
流程標(biāo)準(zhǔn)化
俗話說,無規(guī)矩不成方圓。在踐行DevOps的時(shí)候也需要標(biāo)準(zhǔn)化的交付流程,且這個(gè)流程不是簡單的管理規(guī)范,而是要用持續(xù)交付的流水線來取代冗長的開發(fā)運(yùn)維流程,實(shí)現(xiàn)高效,高質(zhì)。
除了開發(fā)測試交付部分,從運(yùn)維的角度來看,在DevOps里強(qiáng)調(diào)的是輕量化的ITSM流程和架構(gòu),即根據(jù)保證業(yè)務(wù)運(yùn)行連續(xù)性的需要來裁減流程,并形成標(biāo)準(zhǔn)化的流程。所謂標(biāo)準(zhǔn)化指的是在需求、開發(fā)、測試、維護(hù)的過程中將流程最小化。流程過于復(fù)雜是造成IT資源浪費(fèi)的最重要原因,所以應(yīng)該將流程最小化,同時(shí)將更多的精力、勞動(dòng)、資源投入真正創(chuàng)造業(yè)務(wù)價(jià)值的生產(chǎn)中。
工作自動(dòng)化
開發(fā)運(yùn)維流程標(biāo)準(zhǔn)化是自動(dòng)化的前提,如果流程不是標(biāo)準(zhǔn)化,那么自動(dòng)化也是沒有根基的。只有將流程標(biāo)準(zhǔn)化,自動(dòng)化才能有定義的標(biāo)準(zhǔn)。
自動(dòng)化能提升效率,還能使效率和質(zhì)量透明化,讓整個(gè)交付過程更加可控。
DevOps文化
DevOps是一種文化,它提倡團(tuán)隊(duì)成員圍繞共同的業(yè)務(wù)目標(biāo),進(jìn)行互相理解、信任、溝通和協(xié)作,在交付過程出現(xiàn)問題后,從中分析原因和吸取教訓(xùn),而不是互相指責(zé)和推卸責(zé)任。
總的來說,DevOps涵蓋CALMS(自動(dòng)化、精益、可衡量和分享)文化,如下圖:
從項(xiàng)目實(shí)踐來看,DevOps是指導(dǎo)軟件系統(tǒng)交付的一系列實(shí)踐方法,貫穿于項(xiàng)目的計(jì)劃、需求、設(shè)計(jì)、開發(fā)、部署、運(yùn)維及終止的整套過程中。
從傳統(tǒng)的IT項(xiàng)目交付的角度來看,DevOps實(shí)踐框架包括:敏捷管理、持續(xù)集成、持續(xù)交付和自動(dòng)化測試。
# 敏捷管理
指將需求以用戶故事的方式進(jìn)行拆解,然后以最小化、快速迭代的方式進(jìn)行開發(fā)管理。
# 持續(xù)集成
指針對(duì)開發(fā)人員的代碼提交過程,以單件流的方式進(jìn)行流水線式的自動(dòng)化管理。
# 持續(xù)交付
預(yù)先定義、規(guī)劃從代碼生成到產(chǎn)品產(chǎn)出的流水線,并以自動(dòng)化、模板化方式進(jìn)行交付。
# 自動(dòng)化測試
根據(jù)測試流程,以模板化、自動(dòng)化的方式實(shí)現(xiàn)測試的手段。
DevOps相關(guān)工具
cicd與devops區(qū)別
1.cicd是指持續(xù)集成發(fā)布部署,是一套流程實(shí)現(xiàn)軟件的構(gòu)建測試部署的自動(dòng)化。
2.DevOps 就是開發(fā)(Development)、測試(QA)、運(yùn)維(Operations)這三個(gè)領(lǐng)域的合并。雖然名字中沒有體現(xiàn),但是DevOps仍包括測試。
3.DevOps與cicd緊密相關(guān),是理論與實(shí)踐的結(jié)合,DevOps要實(shí)現(xiàn)人員一體化,必須要借助cicd工具來自動(dòng)化整個(gè)流程。
擴(kuò)充.DevOps是一種思想、一組最佳實(shí)踐、以及一種文化。DevOps落地實(shí)施,從組織架構(gòu)、設(shè)計(jì)人員、流程、人員分工、人員技能到工具,變化很大,要求很高,完全顛覆了現(xiàn)有的開發(fā)運(yùn)維模式,建設(shè)風(fēng)險(xiǎn)很高。
CICD和DevOps的區(qū)別和聯(lián)系
個(gè)人理解,CICD更關(guān)注的是整個(gè)開發(fā),測試,部署的自動(dòng)化的過程,當(dāng)我們在本地單元測試通過后,我們提交到git上,觸發(fā)相應(yīng)的webhook或者類似的東西進(jìn)行代碼的構(gòu)建,并打包部署到相應(yīng)的機(jī)器上,自動(dòng)化的完成這整個(gè)過程。
而DevOps更關(guān)注的是打通用戶、PMO、需求、設(shè)計(jì)、開發(fā)(Dev)、測試、運(yùn)維(Ops)等各上下游部門或不同角色;打通業(yè)務(wù)、架構(gòu)、代碼、測試、部署、監(jiān)控、安全、性能等各領(lǐng)域工具鏈;尤其是打通開發(fā)與運(yùn)維之間的gap,因?yàn)閮烧邔?shí)際上存在著很多的沖突。DevOps是基于CICD的,自動(dòng)化的流程是基礎(chǔ),DevOps是一個(gè)項(xiàng)目由idea到實(shí)際穩(wěn)定運(yùn)行的產(chǎn)品的一個(gè)最佳實(shí)踐。
DevOps是CICD思想的延伸,CICD是DevOps的基礎(chǔ)核心,如果沒有CICD自動(dòng)化的工具和流程,DevOps是沒有意義的。文章來源:http://www.zghlxwxcb.cn/news/detail-455300.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-455300.html
選自:
文章:什么是CI/CD - 知乎 (zhihu.com)
文章:什么是DevOps ? - 羅穆瑞 - 博客園 (cnblogs.com)
文章:cicd與devops區(qū)別 (baidu.com)
文章:什么是CI CD? 什么是DevOPS?他們有什么聯(lián)系和區(qū)別?_GaleZhang的博客-CSDN博客_cicd
jenkins學(xué)習(xí):
安裝jenkins教程:jenkins使用docker安裝保姆級(jí)教程(面向小白教程,最新最全,全圖文)2022-8-1,不會(huì)docker也沒關(guān)系
2022-08-03最新更新:使用jenkins+gitee創(chuàng)建docker鏡像并運(yùn)行
2022-08-11最新更新:jenkins流水線(jenkinsfile)詳解,保姆式教程
到了這里,關(guān)于CICD與DevOps的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!