持續(xù)集成(Continuous Integration)在純軟件開發(fā)中是一個(gè)比較通用的實(shí)踐:
持續(xù)集成是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成他們的工作,通常每個(gè)成員每天至少集成一次,也就意味著每天可能會(huì)發(fā)生多次集成。每次集成都通過自動(dòng)化的構(gòu)建(包括編譯,發(fā)布,自動(dòng)化測試)來驗(yàn)證,從而盡快地發(fā)現(xiàn)集成錯(cuò)誤。許多團(tuán)隊(duì)發(fā)現(xiàn)這個(gè)過程可以大大減少集成的問題。
持續(xù)集成通常伴隨著以下幾個(gè)部分:
和版本管理工具友好集成
編譯自動(dòng)化
測試自動(dòng)化
例如,張三開發(fā)了一個(gè)新功能,他所在的版本開發(fā)分支為Testing。他在提交代碼后(當(dāng)然自己需要先測試一下),系統(tǒng)可以自動(dòng)編譯,并運(yùn)行回歸測試用例。在確定功能穩(wěn)定可用后,Testing分支可合并到主分支。
大部分MBD(基于模型的設(shè)計(jì),Model-Based Deisgn)客戶都已經(jīng)比較好地使用了版本管理工具,例如SVN或者Git。很多客戶也能開發(fā)一些MATLAB腳本做一些自動(dòng)化編譯,例如:
使用Embedded Coder自動(dòng)產(chǎn)生算法層C代碼,將C代碼自動(dòng)拷貝到TI的CCS工程和驅(qū)動(dòng)部分代碼整合,然后自動(dòng)調(diào)用CCS的編譯功能進(jìn)行編譯鏈接產(chǎn)生最終二進(jìn)制文件,此后可以將二進(jìn)制文件自動(dòng)下載到開發(fā)板芯片中編譯執(zhí)行。
MBD之所以為一種開發(fā)效率高的開發(fā)模式,用戶會(huì)將主要精力集中于Model-In-the-Loop(MIL)的開發(fā)。在MIL層面,用戶會(huì)開發(fā)大量的單元測試用例,在和用戶的討論中發(fā)現(xiàn),有一種場景比較實(shí)用:
提交模型+自動(dòng)回歸測試+自動(dòng)報(bào)告生成
本文以Git、GitLab、Jenkins為主要工具,介紹如何配置MBD模式下的自動(dòng)回歸測試+自動(dòng)報(bào)告生成。
詳細(xì)配置
注意:通常情況下,Jenkins Server會(huì)選擇一個(gè)計(jì)算能力較強(qiáng)的服務(wù)器,本文為了方便選擇將Simulink和Jenkins裝在同一機(jī)器上。
1. GitLab的項(xiàng)目創(chuàng)建
先在GitLab下建立一個(gè)項(xiàng)目,本地Git和GitLab Server可以選擇SSH連接也可選擇HTTPS方式,本文選擇HTTPS。
然后在本地的Simulink工程目錄,打開Git Bash。
>> Git init
>> Git clone https://insidelabs-git.mathworks.com/mozhou/SBR.git
2. Simulink和Git集成
本文中,Git可視為GitLab的客戶端。Simulink可以直接在界面中,進(jìn)行Git的操作,見下圖:
建議直接用Git命令行操作,優(yōu)勢如下:
Git命令行靈活方便,易于腳本化。
想要熟悉Git命令,自己最好從頭開始,用Git init、Git add、Git commit、Git push把Simulink工程中的文件添加到GitLab Server。也可理解一個(gè)Simulink工程中哪些文件是永久文件(需要添加到版本庫),哪些是中間文件(不需要添加到版本庫)。
Simulink是比較智能的。
一旦你用手動(dòng)方式做了一遍Git操作,Simulink就自動(dòng)“記得”哪些文件和Git庫是有關(guān)聯(lián)。
3.Jenkins的配置
首先,安裝Jenkins時(shí)候裝上必用的幾個(gè)plugin :Git plugin、GitLab plugin、GitLab Hook plugin。然后在Jenkins里面建立項(xiàng)目。
配置源代碼GitLab倉庫設(shè)置
配置BuildTrigger
在GitLab的項(xiàng)目的settings -> integrations:
加上webhook后可以測試一下。
然后回到Jenkins的項(xiàng)目設(shè)置:
配置編譯腳本:
runMyTests.m 是一個(gè)MATLAB腳本,它的功能就是將指定位置的測試用例找到,然后批量執(zhí)行所有回歸測試用例,最后輸出指定格式的報(bào)告。
3. 運(yùn)行
打開模型
瀏覽測試用例:測試用例一共有6個(gè)
編輯模型后,提交到GitLab。
在Jenkins上編譯成功,查看編譯和測試報(bào)告。
在實(shí)際的工程項(xiàng)目中,隨著項(xiàng)目和人員的擴(kuò)展,越來越多的開發(fā)人員會(huì)利用合適的代碼版本管理和持續(xù)集成工具進(jìn)行并行開發(fā)。Git、GitLab、Jenkins這個(gè)組合適用于任意大小規(guī)模的持續(xù)集成開發(fā)模式。持續(xù)集成也是敏捷開發(fā)的一個(gè)最佳實(shí)踐。而MBD的模式——早期驗(yàn)證、虛擬集成完全符合敏捷開發(fā)的理念。越來越多的開發(fā)人員在使用MBD的同時(shí)也關(guān)注如何擁抱敏捷開發(fā)。
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
8702瀏覽量
84569 -
源代碼
+關(guān)注
關(guān)注
96文章
2942瀏覽量
66447
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論