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