4

在使用 gmake 构建普通 c 代码的情况下,如何将系统配置为具有一个主设备和多个从设备?从站如何从主站访问工作区?我想 NFS 共享是可行的方法,但如果这不可能,还有其他选择吗?

http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds在那里但不明白如何处理工作空间共享?

同步?从主机:SCM 作业 -> 完成 -> rsync 到所有从属设备 -> 构建作业,如果在从属设备上完成 -> rsync 工作区返回到主机?

任何概念证明或现实生活中的解决方案?

4

3 回答 3

4

当 Hudson 在从节点上运行构建时,它会从该节点上的源代码控制中进行检查。如果您想从主节点复制其他文件,或者在构建后将其他项目复制回主节点,您可以使用Copy to Slave 插件

于 2010-12-10T20:24:15.873 回答
2

这肯定是一个迟到的答案,但可能会帮助其他人。

我目前正在使用“复制工件插件”,效果很好。 http://wiki.hudson-ci.org/display/HUDSON/Copy+Artifact+Plugin

https://stackoverflow.com/a/4135171/2040743

于 2013-02-04T19:18:24.723 回答
1

只有一种做事方式,其他的存在。

工作空间在分布到多台机器时实际上是不共享的,因为它们作为目录存在于多台机器中的每台机器中。为了解决项目的协调问题,任何需要从一个工作区分发到另一个工作区的项目都通过 SCP 复制到一个中央存储库中。

这意味着有时我有一项任务需要等待项目登陆中央存储库。为了解决这个问题,我让任务运行一个 shell 脚本,它通过 SCP 轮询存储库是否存在所需的项目,如果项目在五分钟后不可用,它会出错。

唯一的缺点是您需要传递一个参数(内部版本号)以将构建保持在同一页面上,从而防止一个构建获取先前版本的构建工件。那你必须设置很多 SSH 密钥以避免在运行 SSH 脚本时需要输入密码。

就像我说的,这不是理想的解决方案,但我发现它比我的 Hudson 特定版本(以及我的 SSH 服务器集)的 ssh 工件抓取代码更稳定。

一个缺点是,大多数 Linux 机器中的 SSH 服务器似乎真的缺乏性能。像我这样的解决方案往往会淹没您的 SSH 服务器,同时会有大量连接进入。如果您发现同样的情况,您可以添加计时器延迟(简单但不完美的解决方案),或者您可以使用高性能补丁重建 SSH 服务器。有一天,我希望高性能补丁能够进入 SSH 服务器的基本代码,前提是它们不会对 SSH 服务器的安全性产生负面影响。

于 2010-12-10T20:00:37.160 回答