是否有任何免费/开源构建系统,您可以自愿将自己的计算机作为构建代理



是否有任何免费或开源的构建系统,您可以自愿将自己的计算机作为构建代理? 我没有遇到过,但我喜欢它的想法。

目标

为特定的开源项目设置持续集成(或至少每晚)构建系统,该项目需要在所有支持的平台上独立构建:Windows、MacOS X 和 Linux。

要求

  1. 允许任意用户自愿将其计算机作为生成系统的新生成代理。
  2. 支持
  3. Windows、MacOS X 和 Linux 系统作为生成代理(如果生成定义适当支持)。
  4. 允许我将生成的构建输出(例如通常是二进制可执行文件或库)传输回中心位置。
  5. 生成
  6. 系统可以验证自愿代理是否能够运行生成定义,或者可以自动安装必要的工具来实现生成定义。
  7. 可以监视 GitHub(或任意 URL)以获取新的提交(更改),以启动对可用生成代理的构建推送。
  8. 如果没有必要类型的生成代理可用,则生成将保持排队状态,直到可以处理(不过,可能会在几天后从队列中删除)。

我知道,通过使用亚马逊云科技免费套餐设置一些 Amazon EC2 实例,我可以实现大部分目标,但是:

  • 它只免费12个月
  • 它不提供MacOS X实例

我从哪里得到这个想法

  1. jQuery的TestSwarm:TestSwarm是一个分布式CI设置,用于在多个浏览器中执行JavaScript测试。可用的浏览器是由用户自愿他们的浏览器"加入群"(本质上是被捕获/连接到群,并且能够接收指令以按需执行给定的测试套件)提供。
  2. 分布式计算项目,如斯坦福大学的Folding@Home软件和伯克利的BOINC基础设施项目。
  3. Microsoft的团队基础服务器 (TFS) 团队构建:虽然我通常鄙视 TFS,但它的团队构建系统基本上通过允许您指定能够运行给定构建定义的生成代理(服务器)池来执行我想要的。Team Build 和我所寻求的之间的最大区别在于,Team Build [大概] 只使用受信任的、受控的服务器作为其构建代理(而不是随机提供的众包服务器)。

已知问题:安全!

虽然我希望自愿将自己的计算机作为构建服务器的过程就像自愿将浏览器提供给TestSwarm一样简单,但在允许访问实际文件系统和命令处理引擎时,显然存在巨大的安全隐患:

  • 客户端计算机(生成代理)希望确保生成系统不会尝试在其慷慨自愿的计算机上执行任何恶意操作。
  • 构建
  • 系统希望确保"不受信任"的客户端计算机(构建代理)不会产生恶意构建输出(例如,使用被黑客入侵的 GCC 版本生成恶意软件/病毒缠身的二进制文件)。这是一个巨大的问题,可能只能通过让构建系统安装自己的软件(Folding@Home)来克服,该软件将整个构建过程打包起来,这样构建代理就不会对构建有任何外部输入(例如,不依赖于用户必须安装的其他工具,例如编译器)。否则,生成系统必须至少请求两个不同的生成代理生成相同的二进制文件,以便可以比较和验证输出。

Jenkins 可以用奴隶来做到这一点。请参阅此文档。 您可以通过为从属设备提供(多个)标签并将构建"附加"到标签来对它们进行分组。Jenkins 从属代理可以在具有有限权限的用户下运行。代理可以由奴隶主启动和终止 - 因此他们可以确保没有安全问题。
一个潜在的问题是,在构建过程中,从站可能会被关闭。

我只在Windows上使用它,但TeamCity可能会这样做。

最新更新