嵌入式开发:如何定义理想的嵌入式CI/CD管道
如今,现代嵌入式软件团队正在实施一个DevOps流程,该流程可以提高安全性、自动化软件开发生命周期、加强协作并提供持续改进。DevOps是加速软件交付的文化哲学、最佳实践和工具的结合。如果提到DevOps,很多嵌入式开发者马上会想到持续集成/持续部署(CI/CD)。在本帖中,我们将探讨如何定义理想的嵌入式CI/CD管道。
CI/CD管道由什么组成?
CI/CD管道是一系列必须成功完成才能交付新软件版本的步骤或作业。在某种程度上,嵌入式开发人员一直都有CI/CD管道,但这是一个手动且耗时的过程。CI/CD管道的现代概念是,它是自动化的,便于向客户交付快速的、微小的软件改进。
典型的CI/CD管道包含三个简单的活动:构建、测试和部署软件。从概念上讲,管道非常简单,但是细节经常让开发人员感到困惑。
仔细考虑每一个方面,确定你想要使用的实现,并对其进行配置并不容易。实现你自己的CI/CD解决方案需要深谋远虑和时间投入,但是该解决方案应该是什么样的呢?每个团队都有自己的需求,但是所有CI/CD管道都有一些标准特性。让我们看看几个领域,并为嵌入式开发人员定义一个通用的CI/CD管道。我们将保持它的简单,以便你将来可以在它的基础上进行构建。
定义理想的CI/CD渠道
一个理想CI/CD管道应该包含以下工作:
l构建–构建作业将获取你的固件并生成发布二进制文件。
l分析——分析构建工作将静态地分析你的代码。典型的分析将包括圈复杂度、编码度量和编码标准遵循,例如样式指南、MISRA和/或CERT。
l测试–测试工作将执行运输产品所需的所有测试。你可能包括单元、功能、集成、系统和性能测试。
l报告——报告作业将从以前的作业中收集结果,以提供关于构建成功、分析结果、测试覆盖率和结果等信息。
lmerge–当所有作业都成功时,合并作业会将新功能合并到部署分支中。这里经常有一个人的因素,但这也可以自动化。
l部署–当合并作业成功完成时,部署作业将运行并启动现场部署流程。部署通常与车队部署软件交互,该软件可以将固件推送到现场设备。
上面的理想管道是我认为嵌入式软件团队想要达到的最低目标。毫无疑问,可以添加额外的活动,例如硬件在环测试、模拟测试等等。然而,并不是所有的团队都能在这些活动中找到价值。仅仅是启动和运行这些活动就会让嵌入式团队忙碌一段时间。一旦你实现了你的理想愿景,你可以保持这个愿景,也可以扩展它,添加你认为对你和你的团队有价值的附加功能。
结论
DevOps很快找到了进入许多团队嵌入式开发过程的方法。CI/CD是DevOps采用的重要驱动因素,因为团队希望以更快的速度交付软件。CI/CD提供的自动化也是一个很好的工具,可以减轻手工工作,将开发人员解放出来,专注于更多的增值特性和产品创新。当你开始你的CI/CD之旅时,你可以利用这篇文章中讨论的基本的理想CI/CD管道。不要害怕将基线塑造成你自己理想的CI/CD。