所以我們從OpenStack的CI/CD框架方法入手,借鑒了CI和CD等方法,來應(yīng)用到自身的業(yè)務(wù)系統(tǒng)中。通過CI在開發(fā)階段,對項目進(jìn)行持續(xù)性自動化編譯、測試,達(dá)到控制代碼質(zhì)量的手段,持續(xù)提升開發(fā)效率;同時利用CD可以保證在短周期內(nèi)生產(chǎn)有價值的產(chǎn)品,并且保證能夠可靠地在任何時間發(fā)布。
當(dāng)然OpenStack CI/CD框架并不是萬靈丹,因為企業(yè)應(yīng)用、Web應(yīng)用、大數(shù)據(jù)分析等各類項目,從需求分析到項目管理、代碼質(zhì)量、測試部署、開發(fā)環(huán)境和生產(chǎn)環(huán)境等,差異很大。唯一不變的就是軟件工程持續(xù)敏捷的思路,真正解決問題的思路!只有踏踏實實去實踐敏捷開發(fā)的思路,才可能開啟產(chǎn)品開發(fā)的破冰之旅。
項目團(tuán)隊引入敏捷開發(fā)的步驟
■ 組織架構(gòu)的變革
首先要說服老板來做這個敏捷決定,最合適的辦法就是讓老板認(rèn)清風(fēng)險,提前做好應(yīng)對風(fēng)險的預(yù)案,并證明敏捷帶來的業(yè)務(wù)價值。
接下來,發(fā)揮領(lǐng)導(dǎo)者所起的導(dǎo)向作用,讓團(tuán)隊參與其中,以敏捷和Scrum為基礎(chǔ),探索具體的工作模式。
■ 團(tuán)隊人員分工優(yōu)化
傳統(tǒng)的人員需盡快從組織職能上轉(zhuǎn)入敏捷,要明確各種成員的角色,比如一些中層IT主管適合平臺經(jīng)理、交付經(jīng)理;傳統(tǒng)的供應(yīng)鏈、采購、人力、法務(wù)、財務(wù)等職能成員,需要以獨立的輔助部門引入;對于一線員工中資深的骨干,可以考慮以架構(gòu)師、領(lǐng)域?qū)<医巧珔⑴c。
■ 流程重定義與風(fēng)險評估
從企業(yè)的敏捷實踐來看,必然會有一部分成員有利益犧牲,也會存在一部分成員的阻力,所謂的陣痛是必須的。所以配合敏捷開發(fā),需要對業(yè)務(wù)流程需要進(jìn)行重新梳理。
立項階段:與現(xiàn)有的研發(fā)需求流程進(jìn)行連接,將關(guān)鍵的執(zhí)行者進(jìn)行確定;
架構(gòu)階段:在團(tuán)隊組建完畢后,將項目架構(gòu)進(jìn)行合理優(yōu)化,與業(yè)務(wù)規(guī)劃保持一致;
發(fā)布計劃:團(tuán)隊配置成型后,形成項目與產(chǎn)品的整體規(guī)劃;
產(chǎn)品開發(fā):在業(yè)務(wù)和IT構(gòu)建階段開始就實現(xiàn)緊密交互,每個迭代可產(chǎn)生交付件;
配置與交付:獲取產(chǎn)品配置的反饋;并形成最小化單次部署的環(huán)境。
■ 管理優(yōu)化及團(tuán)隊的協(xié)作
在傳統(tǒng)的管理方式中,計劃與決定由項目經(jīng)理制定,需求與分析由架構(gòu)師制定,團(tuán)隊所做的只能做實現(xiàn)。改為敏捷模式后,重心由流程向人轉(zhuǎn)移。計劃由團(tuán)隊制定,決定由團(tuán)隊制定。這樣發(fā)揮團(tuán)隊主動與協(xié)同性。
OpenStack CI/CD任務(wù)分解及經(jīng)驗
■ OpenStack CI/CD流程設(shè)計
OpenStack社區(qū)開發(fā)和CI/CD進(jìn)行了緊密的集成,其中核心組件包括:Jenkins配置管理、Github代碼管理及Launchpad項目管理等。
圖10 OpenStack社區(qū)Zuul流程
以O(shè)penStack Zuul項目為例,如圖10所示,簡要的CI/ CD步驟如下:
開發(fā)者提交code,通過Git提交后,首先到Gerrit上進(jìn)行review,目的是通過協(xié)作,發(fā)現(xiàn)一些明顯問題,避免把bug帶到測試中;
code發(fā)送到Jenkins后觸發(fā)build任務(wù)。同時Zuul作為調(diào)度器,基于接收的事件觸發(fā)測試和報告,作為項目的源代碼存儲庫,這樣保證code只有通過測試才能合并;
Zuul開始推送自動化的測試任務(wù)。方式是Jenkins自動觸發(fā)集成測試(Tempest),并反方向地反饋到Gerrit;
等Zuul響應(yīng)測試成功消息后,Gerrit會自動Merge合并代碼,再同步到Gitlab庫;
最后Zuul推送Jenkins的部署任務(wù),進(jìn)行自動化部署。
■ OpenStack CI/CD核心工具
在OpenStack CI/CD框架中,使用到的核心工具包括:
CI核心工具,以Jenkins為中心的自動化測試、集成和發(fā)布的平臺,實現(xiàn)持續(xù)集成。團(tuán)隊開發(fā)成員可以經(jīng)常集成他們的工作,而每次的集成都是通過自動化的構(gòu)建來驗證,包括自動編譯、發(fā)布和測試,從而盡快地發(fā)現(xiàn)集成錯誤。
CD核心工具,以Gitlab作為項目管理和權(quán)限管理的持續(xù)交付平臺,實現(xiàn)一個自托管的Git項目倉庫。同時配合Gerrit,它是一款開源的代碼審查軟件,適用提交前review。一個團(tuán)隊內(nèi)的參與者,可以相互審閱各自修改后的代碼,決定是否能夠提交,退回或者繼續(xù)修改。
■ 企業(yè)IT應(yīng)用以O(shè)penStack CI/CD開發(fā)模式的導(dǎo)入
借鑒OpenStack開發(fā)經(jīng)驗,自有業(yè)務(wù)系統(tǒng)的敏捷開發(fā)流程設(shè)計:
項目開發(fā)準(zhǔn)備All in One開發(fā)環(huán)境,業(yè)務(wù)系統(tǒng)保證源碼安裝,開發(fā)者鏈接Git版本庫的開發(fā)目錄;