快使用yml看护主线bsp,让bsp维护更简单!

描述

问题

目前,RT-Thread仓库中的CI(持续集成)系统对BSP(板级支持包)的检查主要限于基本的GPIO和UART编译配置。这种限制可能导致其他一些.c文件未被检测到,从而可能会导致系统更新的时候出现编译不过的情况。通过添加BSP的YML文件,我们可以让CI系统编译更多配置,确保更全面的代码编译覆盖率。

引入yml有以下几点优势:

可读性和易用性:YML文件采用一种简洁明了的格式,非常接近人类语言,便于阅读和理解,即使是非技术人员也能很容易地进行编辑。

集中管理:使用YML文件可以将所有配置选项集中在一个地方,便于统一管理和修改,减少了分散管理带来的复杂性和可能的错误。

版本控制友好:YML文件是文本文件,可以轻松集成到Git等版本控制系统中。这允许跟踪配置变化历史,并在需要时回滚到之前的版本。

扩展性强:YML文件结构化良好,支持嵌套配置,适合用于描述复杂的配置场景,并且易于扩展以满足新的需求。

自动化集成:YML配置文件可以方便地与CI/CD工具集成,实现自动化构建、测试和部署流程,确保各环境下的一致性。

以下是yml文件的主要内容如下所示。

RT-Thread

简介

我们的RT-Thread仓库中,BSP的CI检测已经涵盖了大部分BSP,所有检测配置都集中在.github/workflow/bsp_buildings.yml文件中。当新的BSP提交时,只需在此YML文件中添加相关配置即可。这一过程已经在300多个BSP中得到了应用,每次Pull Request(PR)都会触发相应的检测。

以下是bsp_buildings.yml中的部分内容

RT-Thread

之前william hill官网 有文章介绍了如何使用attach文件来扩大CI检测范围,当前的目标基本一致,即希望CI能检测更多配置,从而编译更多的.c文件。此外,用户还可以上传自己的常用配置以便复用。RT-Threadwilliam hill官网 上搜索”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,可参考以下配置:

添加如下配置

RT-Thread

这里的配置就是差异的配置,你可以在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的检测

RT-Thread

找到你的BSP查看修改是否生效

RT-Thread

这里可以看到编译是否通过,如果不通过,需要修改对应的.c文件

额外功能

添加scons 参数

另外如果需要加--strict 强制编译的话。

直接添加一个参数scons_arg:

例如:

RT-Thread

添加依赖

如果想要复用之前的config,可以参考下图,添加depends 节点

RT-Thread

添加引用

如果想复用之前的scons_arg: 参数也可以参考下面写法:

RT-ThreadRT-Thread

这个主体功能在https://github.com/RT-Thread/rt-thread/blob/master/tools/ci/bsp_buildings.py 中实现。

总结

通过引入YML配置文件,可以有效保存和管理常用的menuconfig配置。这种方法有助于在CI中维护稳定的配置环境,使得常用的配置不会在编译过程中出现问题。建议在添加YML文件时遵循以下规则:

采用单独的yml文件放所有的配置,

每个配置名称尽量不同,如果相同请用--- 号隔开,可以参考yml语法

尽量在kconfig中写出所有修改的配置,保证config配置能够尽可能方便验证。

#表示注释

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分