Jenkins最佳实践 - nfs在多个从属服务器上安装工作区

时间:2014-05-07 15:56:36

标签: jenkins nfs

我感兴趣的是,如果有人之前已经做过类似的事情,那么它是如何解决的。我们有一个约有15名奴隶的詹金斯农场。现在每个从属设备都有自己的工作空间本地磁盘,但我们的工作并不依赖于特定的从属设备。这意味着如果Job 1最初在Slave1上运行,但后来不得不切换到Slave2,则必须再次提取代码。这似乎是下载时间和磁盘空间方面的浪费,因为代码现在在两个从属服务器上重复。

在所有从属服务器上安装共享NFS驱动器(或其他一些共享驱动器)是一个好主意,这样作业就可以在任何从服务器上运行,但磁盘对所有服务器来说都是一样的吗?显而易见的风险是延迟,但是还有其他风险吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

假设您的网络状况良好并且您的坐骑设置正确,我认为此方法没有任何问题。正如您所建议的那样,您将节省时间,但需要支付网络运输费用 我建议你和一些奴隶一起试试并做一些替补标记。

我希望这会有所帮助。

答案 1 :(得分:2)

我能想到的唯一不利方面是,如果你想同时在多个奴隶上建立相同的工作(不是詹金斯的默认行为,但它是可能的)。在这种情况下,您将使用相同的工作空间目录进行多次构建。

答案 2 :(得分:2)

鉴于磁盘空间如此便宜和快速,我真的怀疑你会从你的计划中看到任何好处。

相反,我可以想到几个缺点:

  • NFS挂载的磁盘空间较慢
  • NFS挂载的磁盘空间可能更不可靠(网络必须工作,服务器必须工作。)
  • 无法告诉Jenkins不同从站上的磁盘实际上是共享的。当Jenkins使用工作空间构建slave2时,Jenkins可能决定清理slave1上的工作空间。

如果您担心结帐时间,可以通过以下方式进行优化:

  • 您不必在构建结束时删除工作区。如果Jenkins看到它已经有一个工作空间,它将尝试重用它来进行下一次构建。
  • 配置SCM以更新和清理现有工作区,而不是每次都检出干净的副本。

根据您使用的版本控制系统,具体操作方法略有不同。也可能有其他技巧你可以做:浅克隆,使用参考回购,......

我非常确定您可以将结帐时间设为无问题。磁盘空间的使用更难以消除,但通常磁盘足够便宜。如果您拥有小而快的SSD磁盘,通常可以在构建结束时从工作区清理生成的文件以节省空间。 (我的确正如此。)

答案 3 :(得分:0)

Jenkins加密在主机A和主机B之间可能有所不同,因此凭据将被破坏