我打算在我们公司设置一个新的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
?或者有没有办法配置环境来执行此操作?
答案 0 :(得分:1)
我被告知有两种方法可以做到这一点:
$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上的快照功能创建的临时文件,我们会定期收到保存更改作业配置的错误。当我们关闭快照时问题就消失了。