【问题标题】:Continuous Integration and running builds on virgin machines?在原始机器上持续集成和运行构建?
【发布时间】:2009-06-02 06:07:46
【问题描述】:
这个问题的两个部分。
1) 作为我们持续集成构建过程的一部分,我想安装所有东西,就好像它是一台原始机器一样。马丁福勒论文:http://martinfowler.com/articles/continuousIntegration.html
他的意思是我们进行每个(集成)构建(干净的机器)并安装所有必要的软件以使构建工作吗?我猜这就是他所说的“单一命令”构建的意思。
2) 这很好地引导我进入下一个问题。是否可以通过命令行全部使用 Powershell/Dos 安装程序?例如,我将如何安装 WinRar 和可能的 MySQL? (Winrar 是一个简单的例子,MySql 很复杂)。
无论如何,我很想听听真实世界的 CI 从业者的意见,以及他们如何处理构建过程。
【问题讨论】:
标签:
continuous-integration
【解决方案1】:
在我构建的最新 CI 环境中,我在单个目录树下安装并配置了工具链和 SDK,然后创建了树的 ImageX WIM 映像。然后,每个干净的构建都会挂载映像,从版本控制检查源,构建它们,运行测试等。卸载时,请记住不要将更改提交回映像,以便映像文件保持干净。
【解决方案2】:
对于我们使用Zed 进行的每个构建,我们确保一个完全干净的工作环境,但假设整个工具链和实用程序应用程序已经安装在机器上。
如果你真的想达到原始机器的水平,那么我会同意 laalto 并研究 VM。设置您的 VM 库以表示您的产品集所需的不同构建环境/配置,并在您需要构建不同产品时按需加载/启动它们。
我认为始终从干净的工作目录构建非常重要,但我质疑始终尝试从裸操作系统开始并为每次构建从头开始安装所有内容的真正价值。