and*_*soj 6 c++ embedded continuous-integration greenhills
我需要您为大型(1-2MLOC)软件开发项目提供持续构建产品的建议.特点:
对您可能提供的任何最佳实践或外围指导感兴趣.构建自动化问题是程序中似乎缺少的几个重叠的最佳实践之一,但尝试将您的答案集中在构建基础架构和直接相关的观察上.
成本不是驱动因素.可扩展性和易于改装到现有基础架构是关键.
(编辑解决@ Dan的评论.;-)
根据我对类似系统的经验,这个问题大约有两个部分:
一种可重复的方法,用于使用少量命令行调用来检查源代码、构建软件并测试它(如果您想在构建的同时进行持续测试)。
在构建场中的各种服务器上调用这些命令行的方法。
对于后者,我们一直在使用BuildBot,它似乎工作得很好。
对于前者,我们有一个自行开发的解决方案,最初是一个简单的 bash shell 脚本,然后不断发展……相当大。根据经验,我建议从 python 而不是 bash 开始——与实际调用程序相比,您将在处理设置和配置上花费更多的代码。(此外,如果您这样做的话,在 Windows 上运行它可能会更容易。)
我发现对我们的脚本的实用性来说真正关键的是:
铁定的重复性。我们有一套标准的构建工具,脚本从清理环境变量开始。命令行选项很少;所有内容都进入配置文件,并且这些内容进入版本控制。
记录。我们生成构建脚本执行的每个命令的日志。
配置文件继承。我们软件的每个变体都有一个配置文件,这些文件可以包含更通用的设置(其中包括更通用的设置)。
可扩展性。当我们添加一个新的源组件时,添加一组用于构建该组件的指令非常容易(并且这些指令可以是任意 bash 代码)。“可以是任意代码”部分可能是这里的关键;现有的产品不可能完成大型复杂的现实世界系统所需的所有奇怪的事情。
您可以从一个相当简单的脚本开始,并让它随着需要的出现而有机地发展;老实说,虽然我们的有点混乱,但我认为我们通过这种方式得到了比重型自上而下设计更有用的结果。
| 归档时间: |
|
| 查看次数: |
788 次 |
| 最近记录: |