Jam*_*ene
7
build-automation
teamcity
continuous-integration
build
jenkins
是否有任何免费或开源构建系统,您可以将自己的计算机作为构建代理自愿提供给您?我没有遇到过,但我喜欢它的想法.
目标
建立一个持续集成(或至少夜间)建立系统需要独立构建的所有支持的平台上特定的开源项目:Windows和MacOS X系统和Linux.
要求
- 允许任意用户将其计算机作为构建系统的新构建代理自愿.
- 支持Windows,MacOS X和Linux系统作为构建代理(如果构建定义适当地支持它).
- 允许我将生成的构建输出(例如,通常是二进制可执行文件或库)传回中心位置.
- 构建系统可以验证自愿代理是否能够运行构建定义,或者可以自动安装必要的工具来实现它.
- 可以监视GitHub(或任意URL)的新提交(更改),以启动对可用构建代理的构建推送.
- 如果可能的必要类型的未生成代理,构建保持排队,直到它可以被处理(尽管,也许是从队列几天后删除).
我知道通过使用Amazon Web Services Free Tier设置一些Amazon EC2实例,我可以完成大部分工作,但是:
在哪里我明白了
- jQuery的TestSwarm:TestSwarm是一个分布式CI设置,用于在多个浏览器中执行JavaScript测试.可用的浏览器由志愿将其浏览器"加入群组"的用户提供(基本上被捕获/连接到Swarm并且能够接收指令以按需执行给定的测试套件.
- 分布式计算项目,如斯坦福大学的Folding @ Home软件和伯克利的BOINC基础设施项目.
- Microsoft的Team Foundation Server(TFS)团队构建:虽然我通常鄙视TFS,但它的Team Build系统基本上可以通过允许您指定能够运行给定构建定义的构建代理(服务器)池来实现我所希望的.团队之间最大的区别构建和我正在寻找的是团队建设[大概]只使用受信任的,控制的服务器作为其生成代理(相对于随机提供的人群来源的服务器).
已知问题:安全性!
虽然我希望将您自己的计算机作为构建服务器进行志愿服务的过程就像将您的浏览器志愿服务于TestSwarm一样简单,但在允许访问您的实际文件系统和命令处理引擎时,显然存在大量的安全隐患:
- 客户端计算机(构建代理)将希望确保构建系统不会尝试在其慷慨的自愿计算机上执行任何恶意操作.
- 构建系统将要确保"不可信"的客户端计算机(建立代理)不生产恶意生成输出(例如,使用GCC的黑客版制作恶意软件/病毒缠身的二进制文件).这是一个巨大的问题,可能可以只通过具有堆积系统中安装自己的软件(一拉的Folding @ Home)了覆盖整个构建过程最多需要克服,从而生成代理没有任何外部输入到构建(例如,不依赖于用户必须安装的其他工具,例如编译器.否则,构建系统必须至少请求两个不同的构建代理构建相同的二进制文件,以便可以比较和验证输出.