易往信息是中國(guó)領(lǐng)先的工業(yè)4.0智能工廠整體解決方案提供商。憑借十余年行業(yè)項(xiàng)目實(shí)施經(jīng)驗(yàn)的沉淀,結(jié)合當(dāng)前“中國(guó)制造2025”的核心思想,不斷升級(jí)智能制造領(lǐng)域業(yè)務(wù),涵蓋汽車整車及零部件、電子、食品、制藥、機(jī)加、家電、能源、物流等行業(yè),是制造企業(yè)智能改造落地的最佳選擇。
多年來(lái),易往信息致力于中國(guó)工業(yè)軟件的研發(fā)與創(chuàng)新。在工業(yè)軟件產(chǎn)品的研發(fā)過(guò)程中,最常采用的是傳統(tǒng)瀑布式開發(fā)模式。易往信息借鑒互聯(lián)網(wǎng)開發(fā)的最佳實(shí)踐,采用SCRUM敏捷開發(fā)模式彌補(bǔ)傳統(tǒng)瀑布式開發(fā)模式的不足,以提高產(chǎn)品研發(fā)的效率。在敏捷開發(fā)模式中,將整個(gè)產(chǎn)品研發(fā)周期設(shè)置成為若干個(gè)沖刺周期(一般以2-4周為一個(gè)周期),每個(gè)周期都包含需求選擇、設(shè)計(jì)、功能實(shí)現(xiàn)與測(cè)試等階段,小步多贏的實(shí)現(xiàn)產(chǎn)品研發(fā)的目標(biāo)。
隨著產(chǎn)品開發(fā)復(fù)雜度的不斷提高,團(tuán)隊(duì)成員不斷增多,如何更好地協(xié)同工作,如何保持良好的溝通,如何按計(jì)劃執(zhí)行,如何保證產(chǎn)品質(zhì)量已經(jīng)成為開發(fā)過(guò)程中不可忽略的問(wèn)題。因此團(tuán)隊(duì)引入持續(xù)集成方案(Continuous integration ,簡(jiǎn)稱CI),希望能夠有效解決上述問(wèn)題。
究竟為什么我們要去做持續(xù)集成,持續(xù)集成究竟可以給我們帶來(lái)什么好處?
持續(xù)集成有如下顯而易見的優(yōu)點(diǎn):
1、 減少重復(fù)性的工作,快速頻繁的發(fā)布代碼,節(jié)省時(shí)間成本,提高效率;
2、 易于定位錯(cuò)誤,及時(shí)反饋,減少風(fēng)險(xiǎn),盡早排除環(huán)境參數(shù)影響,盡早發(fā)現(xiàn)缺陷,盡早評(píng)估質(zhì)量;
3、 優(yōu)化對(duì)研發(fā)進(jìn)度的控制,便于研發(fā)流程各環(huán)節(jié)的銜接;
4、 便于更充分的測(cè)試,開展daily build和smoking test相結(jié)合;
5、 便于工具結(jié)合,持續(xù)代碼質(zhì)量改進(jìn)。如代碼檢查、自動(dòng)化測(cè)試、自動(dòng)化部署、回滾、反饋報(bào)告等;
6、 更快的產(chǎn)出系統(tǒng)級(jí)成果,產(chǎn)品透明化,建立產(chǎn)品信心。工欲善其事,必先利其器。選擇一個(gè)好的工具很重要,而Jenkins就是持續(xù)集成的標(biāo)志性工具。它是基于Java的純Web UI操作的免費(fèi)開源持續(xù)集成引擎,支持眾多插件和開發(fā)語(yǔ)言等(參照?qǐng)D1-Jenkins界面)。
圖1 -Jenkins界面
持續(xù)集成大致的工作流程分為以下幾步(圖2-Jenkins工作原理):
1、開發(fā)者將實(shí)現(xiàn)的代碼模塊或者修復(fù)的功能代碼push到git server (Gitlab)上;
2、Jenkins構(gòu)建觸發(fā)器觸發(fā)進(jìn)行一次build請(qǐng)求(可配置觸發(fā)構(gòu)建方式);
3、Jenkins觸發(fā)獲取Gitlab上的代碼,借助Maven構(gòu)建插件進(jìn)行編譯,測(cè)試,反饋結(jié)果,打包等系列活動(dòng)
4、構(gòu)建結(jié)束后,觸發(fā)Jenkins部署環(huán)境的配置(也可以是設(shè)置好的shell腳本)將程序包部署到對(duì)應(yīng)的運(yùn)行環(huán)境(測(cè)試環(huán)境或生產(chǎn)環(huán)境)中完成整個(gè)持續(xù)集成過(guò)程自動(dòng)化。
圖2-Jenkins工作原理
通過(guò)引入持續(xù)集成工具Jenkins,我們達(dá)到了如下目標(biāo):
λ 持續(xù) (Continuous):不斷的獲取問(wèn)題反饋,響應(yīng)修改問(wèn)題;
λ 集成 (Integration):編譯、測(cè)試、構(gòu)建、打包;
λ 部署 (Deployment):應(yīng)用組件或配置變更在部署環(huán)境中生效;
λ 發(fā)布 (Release):具有完整業(yè)務(wù)邏輯的功能實(shí)現(xiàn);
λ 交付 (Delivery):可以理解為從 Deployment 到 Release 之間的階段,更多的強(qiáng)調(diào)是一種持續(xù)化能力。
通過(guò)采用敏捷開發(fā)模式,使得我們的產(chǎn)品研發(fā)不必等待全部功能設(shè)計(jì)完成,即可快速啟動(dòng)開發(fā),通過(guò)多輪迭代,逐步完善產(chǎn)品功能。在這個(gè)過(guò)程中,持續(xù)集成CI工具以及其他一些輔助工具的使用,確保了代碼開發(fā)質(zhì)量,并使得產(chǎn)品隨時(shí)可編譯、可交付,為產(chǎn)品研發(fā)帶來(lái)了很大的靈活性與便利性,顯著提高了產(chǎn)品研發(fā)的效率。