利用Python优化软件集成工作流

目前,所在的开发团队里同时有多个ECU项目处在开发阶段,这些项目都基于共同的硬件平台,所以各个项目的开发工具链基本一样。而现阶段ECU开发,软件架构上免不了会用上AUTOSAR,或者最少会往AUTOSAR架构上靠,所以这几个项目在软件架构上也基本类似。

就目前开发现状来说,每个项目团队里,都会有一个软件集成的角色,负责维护主开发分支,然后和多个应用开发工程师共同完成项目开发。现阶段每个项目的开发工作量都很大,个人除了日常开发工作,还需要负责一个项目的集成发布以及系统需求跟进。为了提高一下效率,梳理了一下日常集成及固件发布相关的工作流,然后用Pyhton脚本优化了一下,把自己解放出来。主要的优化点有以下几点:

  • 代码自动更新
  • 与版本配置相关的代码文件更新,利用python re正则表达式相关功能自动完成信息提取或更新,避免人肉核对信息。

  • submodule管理,发布打tag,代码提交
  • 不同项目之间的公共模块创建了独立的模块库,通过Git submodule的方式加到项目里。出现过一次同事更新了submodule的逻辑,但是集成时忘记更新submodule,然后代码恰好能够编译通过,导致发布的固件功能异常。为了避免这种低级错误再次发生,通过GitPython这个库的调用,两行代码就实现了自动更新submodule的功能,具体代码参考如下:

    for submodule in repo.submodules: submodule.update(...) 

    在上文第一点中提到的自动更新的代码,也可以利用gitpython模块提供的接口,完成代码的提交和打tag,同时push到远程仓库。但在实际使用中,考虑到可能存在发布失败的可能性,push这个动作还是由人在确认发布的固件没有问题后再执行。

  • MCU资源使用情况监测
  • 可以通过正则表达,自动检索编译生成的map文件,统计ROM、RAM等资源使用情况。再也不用人肉阅读map文件了。

  • 打包发布
  • 固件发布也是一个体力活,需要把bootloader和配置,应用文件等信息打包在一起,没有使用的地址段还要填充为特定的值,然后按照特定的文件格式压缩打包,完了之后还需要计算固件的校验和等等。这个过程最后也用python的os模块,调用类似Hexview这样的工具,自动完成固件文件合并填充,然后利用zipfile模块实现了压缩打包。

    这套脚本基本实现了一键发布的目标,除了自己使用,也逐步开始在其他项目推广。接下来有时间的话,还可以再优化一下,脚本和defect管理系统实现关联,自动完成开发分支集成,实现自动集成和发布,那就完美了。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年5月10日
    下一篇 2019年5月10日

    相关推荐