是否有任何免费或开源构建系统,您可以自愿将自己的计算机作为构建代理?我没有遇到过,但我喜欢它的想法。
目标
为需要在所有支持平台上独立构建的特定开源项目设置持续集成(或至少每晚)构建系统:Windows、MacOS X 和 Linux。
要求
允许任意用户自愿将他们的计算机作为构建系统的新构建代理。
支持 Windows、MacOS X 和 Linux 系统作为构建代理(如果构建定义适本地支持它)。
允许我将生成的构建输出(例如,通常为二进制可执行文件或库)传输回中央位置。
构建系统可以验证自愿代理是否能够运行构建定义,或者可以自动安装必要的工具来实现。
可以监控 GitHub(或任意 URL)的新提交(更改)以启动对可用构建代理的构建推送。
如果没有必要类型的构建代理可用,构建将保持排队直到它可以被处理(不过,可能会在几天后从队列中删除)。
我知道我可以通过使用 Amazon Web Services 设置一些 Amazon EC2 实例来实现大部分目标
Free Tier但:
仅免费 12 个月
它不提供 MacOS X 实例
我从哪里想到的
jQuery 的 TestSwarm :TestSwarm 是一个分布式 CI 设置,用于在多个浏览器中执行 JavaScript 测试。可用的浏览器由自愿让他们的浏览器“加入群”的用户提供(基本上被捕获/连接到群并能够接收指令以按需执行给定的测试套件。
分布式计算项目,如斯坦福的 Folding@Home软件和伯克利BOINC基础设施计划。
Microsoft 的 Team Foundation Server (TFS) Team Build:虽然我通常鄙视 TFS,但它的 Team Build 系统通过允许您指定能够运行给定构建定义的构建代理(服务器)池,基本上满足了我的需求。 Team Build 与我所寻求的最大区别在于 Team Build [大概] 仅使用受信任的、受控的服务器作为其构建代理(而不是随机提供的众包服务器)。
已知问题:安全!
虽然我希望将自己的计算机作为构建服务器的过程就像将浏览器自愿用于 TestSwarm 一样简单,但在允许访问您的实际文件系统和命令处理引擎时显然存在大量安全隐患:
客户端计算机(构建代理)将希望确保构建系统不会尝试在他们慷慨提供的计算机上执行任何恶意的操作。
构建系统将希望确保“不受信任的”客户端计算机(构建代理)不会产生恶意的构建输出(例如,使用 GCC 的黑客版本来产生恶意软件/病毒缠身的二进制文件)。这是一个巨大的问题,可能只能通过让构建系统安装自己的软件(la Folding@Home)来解决,该软件将整个构建过程包装起来,这样构建代理就没有任何外部输入来构建(例如,不依赖于用户必须安装的其他工具,例如编译器)。否则,构建系统至少必须请求两个不同的构建代理构建相同的二进制文件,以便比较和验证输出。
Jenkins 可以用奴隶做到这一点。见 this document .您可以通过给从属(多个)标签并将构建“附加”到标签来对它们进行分组。 Jenkins 从代理可以在具有有限权限的用户下运行。代理可以由从属所有者启动和终止 - 因此他们可以确保没有安全问题。
一个潜在的问题是在构建过程中可能会关闭从站。
我是一名优秀的程序员,十分优秀!