0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

MATLAB ? 來源:djl ? 2019-09-12 09:10 ? 次閱讀

持續(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ì)配置

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

注意:通常情況下,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。

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

然后在本地的Simulink工程目錄,打開Git Bash。

>> Git init

>> Git clone https://insidelabs-git.mathworks.com/mozhou/SBR.git

2. Simulink和Git集成

本文中,Git可視為GitLab的客戶端。Simulink可以直接在界面中,進(jìn)行Git的操作,見下圖:

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

建議直接用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è)置

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

配置BuildTrigger

在GitLab的項(xiàng)目的settings -> integrations:

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

加上webhook后可以測試一下。

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

然后回到Jenkins的項(xiàng)目設(shè)置:

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

配置編譯腳本:

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

runMyTests.m 是一個(gè)MATLAB腳本,它的功能就是將指定位置的測試用例找到,然后批量執(zhí)行所有回歸測試用例,最后輸出指定格式的報(bào)告。

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

3. 運(yùn)行

打開模型

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

瀏覽測試用例:測試用例一共有6個(gè)

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

編輯模型后,提交到GitLab。

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

在Jenkins上編譯成功,查看編譯和測試報(bào)告。

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

關(guān)于持續(xù)集成與基于模型的設(shè)計(jì)的分析和應(yīng)用

在實(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ā)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8702

    瀏覽量

    84569
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2942

    瀏覽量

    66447
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Al大模型機(jī)器人

    豐富的知識(shí)儲(chǔ)備。它們可以涵蓋各種領(lǐng)域的知識(shí),并能夠回答相關(guān)問題。靈活性與通用性: AI大模型機(jī)器人具有很強(qiáng)的靈活性和通用性,能夠處理各種類型的任務(wù)和問題。持續(xù)學(xué)習(xí)和改進(jìn): 這些模型可以通過持續(xù)
    發(fā)表于 07-05 08:52

    【大語言模型:原理與工程實(shí)踐】大語言模型的應(yīng)用

    ,它通過抽象思考和邏輯推理,協(xié)助我們應(yīng)對(duì)復(fù)雜的決策。 相應(yīng)地,我們?cè)O(shè)計(jì)了兩類任務(wù)來檢驗(yàn)大語言模型的能力。一類是感性的、無需理性能力的任務(wù),類似于人類的系統(tǒng)1,如情感分析和抽取式問答等。大語言模型在這
    發(fā)表于 05-07 17:21

    【大語言模型:原理與工程實(shí)踐】探索《大語言模型原理與工程實(shí)踐》2.0

    《大語言模型“原理與工程實(shí)踐”》是關(guān)于大語言模型內(nèi)在機(jī)理和應(yīng)用實(shí)踐的一次深入探索。作者不僅深入討論了理論,還提供了豐富的實(shí)踐案例,幫助讀者理解如何將理論知識(shí)應(yīng)用于解決實(shí)際問題。書中的案例分析
    發(fā)表于 05-07 10:30

    使用cube-AI分析模型時(shí)報(bào)錯(cuò)的原因有哪些?

    使用cube-AI分析模型時(shí)報(bào)錯(cuò),該模型是pytorch的cnn轉(zhuǎn)化成onnx ``` Neural Network Tools for STM32AI v1.7.0 (STM.ai v8.0.0-19389) INTER
    發(fā)表于 03-14 07:09

    gis中制作最小阻力模型步驟

    GIS(地理信息系統(tǒng))是一種集成數(shù)據(jù)、軟件和硬件技術(shù),用于捕獲、存儲(chǔ)、管理、分析和顯示地理數(shù)據(jù)的系統(tǒng)。在GIS中,制作最小阻力模型可以用于研究生物遷徙、水流、物質(zhì)擴(kuò)散等現(xiàn)象。以下是關(guān)于
    的頭像 發(fā)表于 02-25 14:59 ?851次閱讀

    自動(dòng)化構(gòu)建環(huán)境在FPGA設(shè)計(jì)中的應(yīng)用

    為了加快實(shí)現(xiàn) FPGA 構(gòu)建環(huán)境的自動(dòng)化(如用于持續(xù)集成 (CI)),并確保在開發(fā)與生命周期后期階段完整重現(xiàn)設(shè)計(jì)結(jié)果,Missing Link Electronics 團(tuán)隊(duì)已整合出一套腳本。
    發(fā)表于 02-20 11:05 ?288次閱讀
    自動(dòng)化構(gòu)建環(huán)境在FPGA設(shè)計(jì)中的應(yīng)用

    INTEWORK—PET 汽車軟件持續(xù)集成平臺(tái)

    INTEWORK-PET-CI是經(jīng)緯恒潤自主研發(fā)的汽車軟件持續(xù)集成&持續(xù)交付平臺(tái),在傳統(tǒng)的持續(xù)集成基礎(chǔ)上深化了研運(yùn)一體化(DevOps)的概念,將嵌入式軟件中的拉取代碼、檢查、構(gòu)建、測試
    的頭像 發(fā)表于 01-19 11:04 ?423次閱讀
    INTEWORK—PET 汽車軟件<b class='flag-5'>持續(xù)集成</b>平臺(tái)

    電驅(qū)動(dòng)系統(tǒng)性能集成化分析

    對(duì)于電驅(qū)系統(tǒng)的仿真分析,傳統(tǒng)方法是將不同的結(jié)構(gòu)分割,然后再分領(lǐng)域的進(jìn)行設(shè)計(jì)仿真分析。不同的仿真分析之間相互獨(dú)立,系統(tǒng)級(jí)集成往往在后期階段完成?;蛘卟捎枚辔锢韴雎?lián)合仿真的方法,創(chuàng)建二維或
    的頭像 發(fā)表于 01-16 15:05 ?577次閱讀
    電驅(qū)動(dòng)系統(tǒng)性能<b class='flag-5'>集成化分析</b>

    使用仿真模型進(jìn)行拓?fù)?b class='flag-5'>分析

    過去,仿真的基礎(chǔ)是行為和具有基本結(jié)構(gòu)的模型,它們主要適用于簡單集成電路技術(shù)中使用的器件。但是,當(dāng)涉及到功率器件時(shí),這些簡單的模型通常無法預(yù)測與為優(yōu)化器件所做的改變相關(guān)的現(xiàn)象?,F(xiàn)在,通過引入物理和可
    的頭像 發(fā)表于 01-05 10:04 ?720次閱讀
    使用仿真<b class='flag-5'>模型</b>進(jìn)行拓?fù)?b class='flag-5'>分析</b>

    大信號(hào)模型和小信號(hào)模型的區(qū)別

    大信號(hào)模型和小信號(hào)模型是電子工程和通信領(lǐng)域中常用的兩種模型,它們?cè)诿枋龊?b class='flag-5'>分析電子電路或系統(tǒng)時(shí)具有不同的特點(diǎn)和應(yīng)用范圍。以下是關(guān)于大信號(hào)
    的頭像 發(fā)表于 12-19 11:35 ?7736次閱讀

    關(guān)于AD8529開環(huán)增益模型相關(guān)問題

    您好。我在使用AD8529設(shè)計(jì)一個(gè)同向放大電路,其后將驅(qū)動(dòng)電容性負(fù)載,因此希望獲得AD8529的開環(huán)增益模型來預(yù)計(jì)系統(tǒng)瞬態(tài)響應(yīng)性能并添加適當(dāng)?shù)难a(bǔ)償。測試方法參照《基于運(yùn)算放大器和模擬集成
    發(fā)表于 11-23 06:02

    基于Jenkins+GitLab+Maven實(shí)現(xiàn)代碼自動(dòng)打包編譯發(fā)布

    Jenkins是一個(gè)獨(dú)立開源的持續(xù)集成持續(xù)交付工具,用于自動(dòng)化構(gòu)建、測試和部署軟件項(xiàng)目。
    的頭像 發(fā)表于 11-20 09:57 ?3991次閱讀
    基于Jenkins+GitLab+Maven實(shí)現(xiàn)代碼自動(dòng)打包編譯發(fā)布

    關(guān)于相位鎖定環(huán)(PLL)頻率合成器的設(shè)計(jì)和分析

    本篇文章是關(guān)于相位鎖定環(huán)(PLL)頻率合成器的設(shè)計(jì)和分析,重點(diǎn)討論了相位噪聲和頻率噪聲的測量、建模和仿真方法。文章以設(shè)計(jì)一個(gè)假想的PLL頻率合成器為例,詳細(xì)介紹了設(shè)計(jì)過程和步驟。從規(guī)格選擇、電路配置
    的頭像 發(fā)表于 10-26 15:30 ?1277次閱讀
    <b class='flag-5'>關(guān)于</b>相位鎖定環(huán)(PLL)頻率合成器的設(shè)計(jì)和<b class='flag-5'>分析</b>

    VisionFive 2成功集成Android開源項(xiàng)目(AOSP)!

    內(nèi)核集成。 AOSP基線:賽昉致力于持續(xù)集成最新的AOSP基線,為了確保用戶能夠從AOSP的最新更新中獲益,并不斷的帶來改進(jìn)和增強(qiáng)。 支持通過Android Studio進(jìn)行ABD連接。 詳情請(qǐng)?jiān)L問
    發(fā)表于 10-16 13:11

    高質(zhì)量持續(xù)集成:VectorCAST與Jenkins實(shí)戰(zhàn)指南

    持續(xù)集成(ContinuousIntegration,簡稱CI)是一種軟件開發(fā)/測試方法。它要求開發(fā)及測試人員頻繁地將代碼提交到用于共享的開發(fā)分支中,經(jīng)過充分的測試和審查,然后通過自動(dòng)化的構(gòu)建和測試
    的頭像 發(fā)表于 09-28 08:27 ?1093次閱讀
    高質(zhì)量<b class='flag-5'>持續(xù)集成</b>:VectorCAST與Jenkins實(shí)戰(zhàn)指南