原文:https://medium.com/edureka/ci-cd-pipeline-5508227b19ca
作者:Saurabh Kulshrestha
在參加一次分享會上大佬口中時常提到平時工作中不怎么熟悉的詞匯如DevOps一死、CI/CD等,一下子勾起我的求知心傻唾,它們究竟是什么投慈?為何在前端領(lǐng)域有流行趨勢?下面是記錄學(xué)習(xí)的筆記冠骄,然后我也嘗試著安裝了docker和Jenkins鏡像實踐操作一波伪煤,因為我們不光要知所以然也要知其所以然,動手實踐才是真正學(xué)到凛辣,而不是走馬觀花式不求甚解抱既。
DevOps是什么?
DevOps 是一種軟件開發(fā)方法扁誓,它將持續(xù)開發(fā)防泵、持續(xù)測試、持續(xù)集成蝗敢、持續(xù)部署和持續(xù)監(jiān)控貫穿于軟件開發(fā)的整個生命周期捷泞。(DevOps is a software development approach which involves continuous development, continuous testing, continuous integration, continuous deployment and continuous monitoring of the software throughout its development life cycle.)
先明白其概念,DevOps是什么寿谴,按照作者的解釋是一種有關(guān)軟件開發(fā)的方法锁右。落實到我們實際工作中翻譯大白話則是開發(fā)(Dev)和運維(Operation)的結(jié)合體(Integration)。
平時我們開發(fā)和運維的流程是分析需求(plan)
-> 代碼開發(fā)(code)
-> 打包構(gòu)建(build)
-> 用例測試(test)
-> 上線部署(deploy)
-> 項目運營(operation)
-> 埋點或異常監(jiān)控(monitor)
。在整個流程中一般公司常常會分配三個崗位(開發(fā)骡湖、測試贱纠、運維),而在DevOps出現(xiàn)后响蕴,只需一個崗位即可谆焊,這個崗位則是囊括了開發(fā)、測試和運維的工作浦夷,集成了開發(fā)辖试、交付、維護劈狐、監(jiān)控等罐孝。當(dāng)前幾乎所有的頂尖公司均采用了該方法,用以提高軟件開發(fā)質(zhì)量肥缔,并縮短軟件開發(fā)生命周期莲兢。從而以達到每個公司對軟件產(chǎn)品的期望,交付出客戶最滿意的產(chǎn)品续膳。
DevOps 生命周期
要想完整的理解 DevOps改艇,我們還需要了解一下 DevOps 的生命周期。接下來通過一張圖來展示 DevOps 的生命周期以及它和軟件開發(fā)生命周期之間的關(guān)系坟岔。
簡單解釋:第1步是版本控制和源碼管理谒兄;第2步是持續(xù)集成包括通過編譯、代碼冗余檢測社付、代碼review承疲、單元測試;第3步是持續(xù)交付在測試環(huán)境測試用例和業(yè)務(wù)功能鸥咖;第4步是持續(xù)部署和上線燕鸽。而整個過程是可以被持續(xù)監(jiān)控(Continuous Monitor)的,比如用Jenkins啼辣。
什么是 CI/CD 流水線绵咱?
CI 代表持續(xù)集成(Continuous Integration),CD 代表持續(xù)交付(Continuous Delivery)和持續(xù)部署(Continuous Deployment)熙兔。也可以將它們看作是類似于軟件開發(fā)生命周期的過程。
如上圖所示艾恼,該流水線展示了一個軟件在其最終交付給客戶或者投入上線之前的移動過程住涉,它在其生命周期內(nèi)的各個階段包括:版本控制、構(gòu)建钠绍、單元測試舆声、部署、自動化測試、部署到生產(chǎn)環(huán)境媳握、度量和驗證階段碱屁。
至此,我們了解DevOps和CI/CD及流水線工作原理蛾找。之所以要采用 DevOps 模式娩脾,目的就是為了可以更快速更可靠的構(gòu)建出高質(zhì)量的軟件,同時還能夠加深團隊之間的溝通和協(xié)作打毛。
希望關(guān)注DevOps的開發(fā)者動起手嘗試著操作一波安裝docker和Jenkins來跑一個項目柿赊,想必可以體會到自動化部署的feel爽。