豬八戒網(wǎng)CI/CD最佳實踐之路

序言

本文旨在介紹ZBJ DevOps團隊傾力打造的DevOps平臺中關(guān)于CI/CD流水線部分的實踐。歷經(jīng)三次大版本迭代更新的流水線,完美切合ZBJ各種業(yè)務(wù)發(fā)展需求,在滿足高頻率交付的同時,提高了研發(fā)效率,降低了研發(fā)成本,保證了交付質(zhì)量。
持續(xù)集成(Continuous Integration)簡稱CI,持續(xù)集成強調(diào)開發(fā)人員提交了新代碼之后,立刻進行構(gòu)建、(單元)測試。根據(jù)結(jié)果,我們可以確定新代碼和原有代碼能否正確地集成在一起。持續(xù)集成過程中很重視自動化測試驗證結(jié)果,對可能出現(xiàn)的一些問題進行預(yù)警,以保障最終集成的代碼沒有問題。持續(xù)交付(Continuous Delivery)簡稱CD,持續(xù)交付在持續(xù)集成的基礎(chǔ)上,將集成后的代碼部署到更貼近真實運行環(huán)境的「類生產(chǎn)環(huán)境」(test,testing)中,然后交付給質(zhì)量團隊,以供評審。如果評審?fù)ㄟ^,代碼就進入生產(chǎn)階段。持續(xù)交付并不是指軟件每一個改動都要盡快部署到產(chǎn)品環(huán)境中,它指的是任何的代碼修改都可以在任何時候?qū)嵤┎渴稹S械娜艘舶袰D稱為Continuous Deployment(持續(xù)部署),持續(xù)部署是指當(dāng)交付的代碼通過評審之后,可以部署到生產(chǎn)環(huán)境中。這里需要注意的是,持續(xù)部署應(yīng)該是持續(xù)交付的最高階段,持續(xù)交付是一種能力,持續(xù)部署是一種持續(xù)交付的表現(xiàn)方式。

豬八戒網(wǎng)的CI/CD之路

背景介紹
在提到ZBJ DevOps流水線之前,先交代一下歷史背景。2015年前,豬八戒網(wǎng)80%的項目都是用PHP語言開發(fā)的,剩下的少部分使用的是Nodejs和Java。2015年,ZBJ研發(fā)中心進行了自發(fā)性的“工業(yè)革命”——騰云七號行動——使用Java語言將核心業(yè)務(wù)代碼進行了重構(gòu)和拆解,建立了以Dubbo為核心的SOA微服務(wù)框架,使用ZooKeeper Swoole為核心的業(yè)務(wù)調(diào)用提供機制。滿足新業(yè)務(wù)使用Java語言編寫、老業(yè)務(wù)仍然使用PHP編寫,同時支持兩種語言(Nodejs