只有一种做事方式,其他的存在。
工作空间在分布到多台机器时实际上是不共享的,因为它们作为目录存在于多台机器中的每台机器中。为了解决项目的协调问题,任何需要从一个工作区分发到另一个工作区的项目都通过 SCP 复制到一个中央存储库中。
这意味着有时我有一项任务需要等待项目登陆中央存储库。为了解决这个问题,我让任务运行一个 shell 脚本,它通过 SCP 轮询存储库是否存在所需的项目,如果项目在五分钟后不可用,它会出错。
唯一的缺点是您需要传递一个参数(内部版本号)以将构建保持在同一页面上,从而防止一个构建获取先前版本的构建工件。那你必须设置很多 SSH 密钥以避免在运行 SSH 脚本时需要输入密码。
就像我说的,这不是理想的解决方案,但我发现它比我的 Hudson 特定版本(以及我的 SSH 服务器集)的 ssh 工件抓取代码更稳定。
一个缺点是,大多数 Linux 机器中的 SSH 服务器似乎真的缺乏性能。像我这样的解决方案往往会淹没您的 SSH 服务器,同时会有大量连接进入。如果您发现同样的情况,您可以添加计时器延迟(简单但不完美的解决方案),或者您可以使用高性能补丁重建 SSH 服务器。有一天,我希望高性能补丁能够进入 SSH 服务器的基本代码,前提是它们不会对 SSH 服务器的安全性产生负面影响。