哈德森奴隶,如何访问工作区

时间:2010-12-10 19:48:41

标签: hudson rsync slave

如何配置系统有一个主站和多个从站用gmake构建正常的c代码?奴隶如何从主人那里访问工作区?我想NFS分享是可行的,但如果不可能有任何其他选项?

http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds在那里,但无法理解如何处理工作区共享?

Rsync的?来自master:SCM工作 - >完成 - > rsync到所有奴隶 - >建立工作,如果在奴隶上完成 - > rsync工作区回到主?

任何概念验证或现实解决方案?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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

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

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

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

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

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