問(wèn)題
目前,RT-Thread倉(cāng)庫(kù)中的CI(持續(xù)集成)系統(tǒng)對(duì)BSP(板級(jí)支持包)的檢查主要限于基本的GPIO和UART編譯配置。這種限制可能導(dǎo)致其他一些.c文件未被檢測(cè)到,從而可能會(huì)導(dǎo)致系統(tǒng)更新的時(shí)候出現(xiàn)編譯不過(guò)的情況。通過(guò)添加BSP的YML文件,我們可以讓CI系統(tǒng)編譯更多配置,確保更全面的代碼編譯覆蓋率。
引入yml有以下幾點(diǎn)優(yōu)勢(shì):
可讀性和易用性:YML文件采用一種簡(jiǎn)潔明了的格式,非常接近人類語(yǔ)言,便于閱讀和理解,即使是非技術(shù)人員也能很容易地進(jìn)行編輯。
集中管理:使用YML文件可以將所有配置選項(xiàng)集中在一個(gè)地方,便于統(tǒng)一管理和修改,減少了分散管理帶來(lái)的復(fù)雜性和可能的錯(cuò)誤。
版本控制友好:YML文件是文本文件,可以輕松集成到Git等版本控制系統(tǒng)中。這允許跟蹤配置變化歷史,并在需要時(shí)回滾到之前的版本。
擴(kuò)展性強(qiáng):YML文件結(jié)構(gòu)化良好,支持嵌套配置,適合用于描述復(fù)雜的配置場(chǎng)景,并且易于擴(kuò)展以滿足新的需求。
自動(dòng)化集成:YML配置文件可以方便地與CI/CD工具集成,實(shí)現(xiàn)自動(dòng)化構(gòu)建、測(cè)試和部署流程,確保各環(huán)境下的一致性。
以下是yml文件的主要內(nèi)容如下所示。
簡(jiǎn)介
我們的RT-Thread倉(cāng)庫(kù)中,BSP的CI檢測(cè)已經(jīng)涵蓋了大部分BSP,所有檢測(cè)配置都集中在.github/workflow/bsp_buildings.yml文件中。當(dāng)新的BSP提交時(shí),只需在此YML文件中添加相關(guān)配置即可。這一過(guò)程已經(jīng)在300多個(gè)BSP中得到了應(yīng)用,每次Pull Request(PR)都會(huì)觸發(fā)相應(yīng)的檢測(cè)。
以下是bsp_buildings.yml中的部分內(nèi)容
之前論壇有文章介紹了如何使用attach文件來(lái)擴(kuò)大CI檢測(cè)范圍,當(dāng)前的目標(biāo)基本一致,即希望CI能檢測(cè)更多配置,從而編譯更多的.c文件。此外,用戶還可以上傳自己的常用配置以便復(fù)用。RT-Thread論壇上搜索”attach”關(guān)鍵字大家可以查看文章。
attach: 大致上可以理解為不同的config配置,提供給CI,讓CI來(lái)進(jìn)行編譯檢查。
yml文件
我們引入了一個(gè)包含所有配置的YML文件,方便統(tǒng)一管理和修改。這種方式與attach文件功能相同,采用YML文件更易管理和編輯,也可以采用之前attach文件方式,目前是兼容的。
參考yml文件
https://github.com/RT-Thread/rt-thread/blob/master/bsp/nrf5x/nrf5340/.ci/attachconfig/ci.attachconfig.yml
如何添加yml文件
第一步添加ci.attachconfig.yml
在你常用的bsp下面添加文件.ci/attachconfig/ci.attachconfig.yml
比如bsp/nrf5x/nrf5340/.ci/attachconfig/csi.attachconfig.yml
參考鏈接
https://github.com/RT-Thread/rt-thread/blob/master/bsp/nrf5x/nrf52840/.ci/attachconfig/ci.attachconfig.yml
注意這里的文件夾結(jié)構(gòu)和文件名不要改變。
第二步,添加對(duì)應(yīng)的CONFIG
在YML文件中填寫需要啟用的menuconfig選項(xiàng)。例如,為測(cè)試segger_rtt,可參考以下配置:
添加如下配置
這里的配置就是差異的配置,你可以在menuconfig之后,查看.config 的差異,找到這些修改之后的配置。這里注意只需要填寫主要的menuconfig的那個(gè)主配置,比如這里選中軟件包CONFIG_PKG_USING_SEGGER_RTT 其他默認(rèn)配置不需要添加,只添加修改的配置即可。
如果想要disable某個(gè)配置也是添加CONFIG_RT_USING_SERIAL_V2=n即可。
第三步,提PR驗(yàn)證
通常提交PR之后,會(huì)有一個(gè)對(duì)所有BSP的檢測(cè)
https://github.com/RT-Thread/rt-thread/actions/workflows/bsp_buildings.yml
這里是所有bsp的檢測(cè)
找到你的BSP查看修改是否生效
這里可以看到編譯是否通過(guò),如果不通過(guò),需要修改對(duì)應(yīng)的.c文件
額外功能
添加scons 參數(shù)
另外如果需要加--strict 強(qiáng)制編譯的話。
直接添加一個(gè)參數(shù)scons_arg:
例如:
添加依賴
如果想要復(fù)用之前的config,可以參考下圖,添加depends 節(jié)點(diǎn)
添加引用
如果想復(fù)用之前的scons_arg: 參數(shù)也可以參考下面寫法:
這個(gè)主體功能在https://github.com/RT-Thread/rt-thread/blob/master/tools/ci/bsp_buildings.py 中實(shí)現(xiàn)。
總結(jié)
通過(guò)引入YML配置文件,可以有效保存和管理常用的menuconfig配置。這種方法有助于在CI中維護(hù)穩(wěn)定的配置環(huán)境,使得常用的配置不會(huì)在編譯過(guò)程中出現(xiàn)問(wèn)題。建議在添加YML文件時(shí)遵循以下規(guī)則:
采用單獨(dú)的yml文件放所有的配置,
每個(gè)配置名稱盡量不同,如果相同請(qǐng)用--- 號(hào)隔開(kāi),可以參考yml語(yǔ)法
盡量在kconfig中寫出所有修改的配置,保證config配置能夠盡可能方便驗(yàn)證。
#表示注釋
-
檢測(cè)
+關(guān)注
關(guān)注
5文章
4503瀏覽量
91590 -
BSP
+關(guān)注
關(guān)注
1文章
88瀏覽量
26190 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1299瀏覽量
40258
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論