Jenkins最佳实践-在多个从机上挂载NFS工作空间

4

我想知道是否有人曾经尝试过这样的事情,如果是的话,它是如何运作的。我们有一个拥有约15个从节点的Jenkins工作农场。目前每个从节点都有自己的本地磁盘用于工作区,但是我们的作业不会绑定到特定的从节点。这意味着如果作业1最初在从节点1上运行,但后来必须切换到从节点2,则它将必须再次拉取代码。这似乎浪费下载时间和磁盘空间,因为现在该代码已重复存在于两个从节点中。

是否值得将一个共享的NFS驱动器(或其他共享驱动器)挂载到所有从节点上,以便作业可以在任何一个从节点上运行,但所有从节点的磁盘内容都是相同的?显然的风险将是延迟,但还有其他相关的风险吗?

谢谢!

4个回答

2
假设您的网络良好且挂载设置正确,我认为这种方法没有任何问题。正如您建议的那样,您将节省时间,但需要支付网络传输费用。
我建议您尝试使用一些从机进行一些基准测试。

希望这有所帮助。


2

我能想到的唯一缺点是,如果您想同时在多个代理上构建相同的作业(这不是Jenkins的默认行为,但可能会发生),那么您将有多个使用相同工作区目录的构建。


2
鉴于现在磁盘空间如此便宜且快速,我真的怀疑您的计划会带来任何好处。相反,我可以想到几个缺点:
- NFS挂载的磁盘空间较慢。 - NFS挂载的磁盘空间可能更加不可靠(网络必须工作,服务器必须工作)。 - 没有办法告诉Jenkins不同从机上的磁盘实际上是共享的。Jenkins可能会决定在使用slave2构建时清理slave1上的工作区。
如果您担心检出时间,有几种优化方法:
- 您不必在构建结束时删除工作区。如果Jenkins看到它已经有一个作业的工作区,它将尝试为下一次构建重用它。 - 配置SCM以更新和清理现有的工作区,而不是每次都检出干净的副本。
如何执行这些操作的详细信息略有不同,具体取决于您使用的版本控制系统。此外,还可能有其他技巧可供尝试:浅克隆、使用参考存储库等等。
我非常确定您可以使检出时间成为不重要的问题。磁盘空间使用则较难消除,但通常磁盘足够便宜。如果您拥有小而快速的SSD磁盘,通常可以在构建结束时清理工作区中生成的文件以节省空间。(我在工作中正好遇到这种情况。)

根据大约6个月的数据,我们发现本地磁盘的性能要好得多。我们测试的NAS磁盘在负载下表现不佳。 - JamesE

0

Jenkins加密可能因主机A和主机B而异,因此凭据将失效


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接