嵌入式最大的趋势之一是采用和改进持续集成/持续部署(CI/CD)实践。CI/CD背后的思想是团队需要尽可能多地自动化他们的嵌入式开发过程。
今天的嵌入式系统对于人工工作来说已经变得过于复杂和精密。当然,你无法摆脱它,但是在开发周期中有太多可以自动化的东西。如果利用得当,自动化可以简化开发、降低成本和缩短上市时间。
在今天的文章中,我们将探讨三种简单的方法来帮助你开始使用嵌入式软件的CI/CD。
技巧1:量化价值
开始你的CI/CD之旅时,先量化开始这项工作需要花费的时间和成本,然后再量化它将带来的好处。例如,你可能会考虑实施成本,例如:
每个用户的工具成本
每位用户的培训成本
管道设计和安装成本
每年的维护成本
每个用户的时间投资
一旦你了解成本,你必须问自己:你有投资CI/CD开发的预算吗?你的团队是否有足够的资源来实施新流程、接受培训等?
然而,上述问题并不能让你了解全貌。你还需要量化收益,例如:
在bug到达客户手中之前将其捕获
利用TDD和模拟等现代技术
通过利用自动化和提高产品质量来降低成本和缩短上市时间
如果你预先花一些时间分析你从CI/CD中获得的收益与成本,你会发现它提供了很好的投资回报。
技巧2:构建自动化
开始使用CI/CD最简单和最容易的方法是让你的软件自动构建。构建自动化是关键的第一步。它为你提供了设置可重用构建环境和脚本来控制管道的经验。
可重用的构建环境通常是使用Docker之类的容器工具来实现的。Docker允许你打包构建软件所需的环境和工具。该容器可用于在服务器上构建你的软件,但开发人员也可以在开发过程中使用它来构建软件!
由于开发人员在他们的计算机上有不同的构建环境,bug突然出现并不罕见。容器有助于确保每个人在完全相同的环境中使用完全相同的工具。这包括你刚刚起步的CI/CD渠道!
相同的环境非常重要,因为当你在CI/CD管道中运行一个作业来构建最新的固件时,服务器上的环境应该与你开发代码的环境相同。否则,管道可能会说你的代码无法构建,而实际上,这可能只是一个服务器配置问题。
构建自动化是很好的第一步,因为它允许你和团队验证你最近的提交实际上构建成功了。你可能会想,谁会提交不起作用的代码呢?它确实发生了。对看起来很好的代码做一点小小的调整,却发现它无法构建,这种情况并不罕见。
技巧3:自动化代码度量报告
一旦有了可以在服务器上构建固件的容器,下一步就是自动化代码度量报告。分析源代码中的问题有很大的价值。它帮助你跟踪你的进度,以及许多问题,这些问题通常不会被发现,除非进行手工代码审查。
例如,每个团队都努力遵循一个编码标准,这样所有的代码看起来都一样。我们创建编码风格指南和各种其他流程。然而,开发人员偏离这些风格的频率有多高?一直都是!审查每一行代码并确保它符合标准的工作量太大了。这就是自动化的用武之地!
你可以设置管道,以便对软件进行分析。分析可以有很大的不同,比如这些内容:
坚持编码风格
功能复杂性
连接
内聚力
代码行
代码覆盖率
等等。
这个清单可以一直列下去。然后可以使用代码度量的报告来发现开发代码中的问题。大多数团队忽略了基本的软件度量。不幸的是,这使得团队对潜在的问题和他们积累的技术债务视而不见。如果你尽早将报告构建到你的管道中,它将为你提供及早发现问题并在变革成本仍然较低时修复它们所必需的洞察力。
结论
CI/CD是一种现代技术,几乎每个嵌入式软件团队都应该采用。如今,工具的存在使得采用变得非常经济。事实上,它非常容易上手,并且不需要花费大量的时间和金钱来建立一个基本的管道。
正如我们所讨论的,最好的开始方式是首先建立一个容器构建系统。然后,你将能够在管道中设置一个构建作业,以验证代码至少编译成功。此后,分析你的软件的度量、静态分析等等就没有更多的工作了。
从那里,你会发现你已经对你的开发过程有了很多的可视性。自动化有助于确保你可以继续获得洞察力,而无需团队付出太多努力。
这两个首要的技巧可以帮助你形成一个基线CI/CD过程,为你的团队和客户提供大量的价值,并且可以扩展到更复杂的自动化形式。