在NAS上使用Jenkins

时间:2012-07-30 17:49:49

标签: jenkins

我打算在我们公司设置一个新的Jenkins服务器。我想在Jenkins中保留所有可部署的工件,原因有多种(易于访问,访问控制等)。

如果这些可部署的工件保存在NAS上,公司会更喜欢。这对我来说没问题。我可以设置Jenkins使用NAS并简单地保留整个配置。我担心的是,由于它是通过网络连接的远程驱动器,因此某些项目可能会构建得更慢。我想我可以配置有问题的工作来使用本地工作目录来根据需要加快速度。

但是,如果有一种简单的方法来设置Jenkins以便工作目录自动在本地计算机上,而其他所有内容都可以在NAS上,那就太好了。这对我来说需要较少的设置和工作。我不必记得在需要时设置本地工作目录,而且我不必跟踪哪些作业有一个时髦的工作目录。

我认为有两种方法可以做到:

  • 设置Jenkins,以便将工作目录计算为特定的本地目录。例如,如果作业在/mnt/nas/jenkins/jobs/foo,则工作目录为/opt/jenkins/jobs/foo/opt/local/jenkins/foo

  • 以某种方式配置整个系统,以便某些目录是本地的,而其他目录在NAS上。例如,/opt/local/jenkins/jobs/foo下的所有目录都在NAS上,除了/opt/local/jenkins/jobs/foo/workdir是本地存储。

有没有办法让Jenkins在作业目录下自动使用不同的目录作为工作目录而不是workdir?或者有没有办法配置环境来执行此操作?

2 个答案:

答案 0 :(得分:1)

我被告知有两种方法可以做到这一点:

  • 设置从属设备,从属设备可以与Jenkins服务器在同一台计算机上,并让从设备完成所有构建。从站将在本地构建,然后将信息发送回将在NAS上的Jenkins服务器。工作目录是本地的,因为它是正在进行构建的奴隶,但工件将在NAS上,因为那是Jenkins存储它们的地方。
  • Jenkins在其常规配置中有两个新选项。我乍一看就错过了他们。它们位于配置屏幕的顶部,您必须按高级按钮才能看到它们。一个允许您指定工作目录的位置,因此它位于$JENKINS_HOME之外。我可以在NAS上设置$JENKINS_HOME,然后告诉Jenkins将本地目录放在本地驱动器上。另一个允许我指定构建记录的放置位置。我可以在NAS上保留构建记录(包括存档的工件),并在本地计算机上设置JENKINS_HOME

这正是我想要的。显然,其他人也需要同样的东西。

答案 1 :(得分:0)

我们在我的日常工作中通过在$ JENKINS_HOME下使用某些子目录的符号链接来完成此操作。在我们的示例中,我们希望将所有作业配置,历史记录和已发布的工件存储在SAN卷上,并将其余的Jenkins文件保留在本地存储上。这只是从$ JENKINS_HOME / jobs创建一个符号链接到SAN卷上的目录。

在您的情况下,您似乎希望将$ JENKINS_HOME设置为指向NAS上的目录,但是您的构建的工作区目录驻留在本地存储上。这也很简单,因为每个构建的工作区都保存在子目录中;我认为这是$ JENKINS_HOME / workspace,抱歉我无法确认,因为我们的设置使用了单独的构建从属,并且没有在主服务器上设置任何执行程序。

使用NAS的一个警告词;我们在切换到SAN之前使用NAS for Jenkins,并发现由于Jenkins无法删除由NAS上的快照功能创建的临时文件,我们会定期收到保存更改作业配置的错误。当我们关闭快照时问题就消失了。