2012-07-30 145 views
1

我打算在我们公司建立一个新的Jenkins服务器。我想在各种原因(易于访问,访问控制等)中保留Jenkins中所有可部署的工件。通过NAS使用Jenkins

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

但是,如果有一个简单的方法来设置Jenkins,以便工作目录自动在本地机器上,而其他所有内容都可以在NAS上,那将会很不错。那需要更少的设置和工作。我不必记得在需要时设置本地工作目录,而且我不必跟踪哪些作业有时髦的工作目录。

我看到两种方法可以这样做:

  • 设置詹金斯使工作目录计算为一个特定的本地目录。例如,如果工作在/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是本地存储。

是否有配置詹金斯自动使用不同的目录作为工作目录,而不是workdir工作目录下的方法吗?或者有没有办法配置环境来做到这一点?

+0

另一种替代方法是将您的发布工件发布到专用存储库,如Nexus。我希望Jenkins尽可能保持无状态,并使用我的回购作为发布记录。这种方法意味着我不那么依赖于特定的构建技术,并且不会受到数据丢失的影响 – 2012-08-05 10:13:00

+0

我们使用的是Artifactory,并且我们一定会将我们在Artifactory中创建的罐子/战争放在一起,所以其他项目将通过Maven或Ivy 。然而,在Jenkins中保留你倾向于在生产中部署的工件(认为拉链,rpms和耳朵)有很大的优势。它将这些部署与发展联系起来。例如,“我们正在将foo.rpm部署到生产中,鲍勃是否做出了改变?” “是的,它是在Build#20中完成的,我们正在部署Build#21。”在詹金斯保持文物为我们提供了一种谈论各种版本的语言。 Build#22不稳定。 QA正在测试Build#40。 – 2012-08-06 02:09:18

+0

的确如此。您也可以使用Nexus中的分段套件进行此操作。正如我上面所说,我的选择是有一个单一的记录系统。 – 2012-08-06 10:32:38

回答

0

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

就你而言,它看起来像你想要设置$ JENKINS_HOME指向你的NAS上的一个目录,但是你的构建的工作空间目录驻留在本地存储上。这也很简单,因为每个构建的工作空间都保存在一个子目录中;我认为这是$ JENKINS_HOME/workspace,对不起,我不能确认,因为我们的设置使用单独的构建奴隶,并没有任何执行者设置在主人。

使用NAS的警告之一字;在切换到SAN之前,我们使用NAS作为Jenkins,并发现由于Jenkins无法删除由NAS上的快照功能创建的临时文件,我们经常会因保存对作业配置的更改而出错。当我们关闭快照时,问题就消失了。

+1

我最近发现Jenkins在全局配置中实现了两个新的配置选项。您现在可以指定将工作目录放置在别处**或**指定构建目录(所有构建的记录)的放置位置。这些选项都可以完全符合我的要求。我在上一份工作中使用了詹金斯,并在4月份更新了詹金斯,而这些选择并不存在,所以他们相当近。感谢您的回复。 – 2012-07-31 19:45:35

1

我被告知这样做的方法有两种:

  • 设置一个奴隶,奴隶可以是同一台计算机詹金斯服务器上,并有从做所有的基础之上。奴隶将在本地建立,然后将信息发回给位于NAS上的Jenkins服务器。工作目录是本地的,因为它是进行构建的奴隶,但是工件将存在于NAS上,因为那里是Jenkins存储它们的地方。
  • 詹金斯在其一般配置中有两个新选项。乍一看,我很想念他们。他们位于配置屏幕的最顶端,您必须按下按钮才能看到它们。一个允许你指定你想要的工作目录,所以它位于$JENKINS_HOME之外。我可以在NAS上设置$JENKINS_HOME,然后告诉Jenkins将本地目录放在本地驱动器上。另一个允许我指定建立记录的位置。我可以保留NAS上的构建记录(包括存档的工件),并在本地机器上设置JENKINS_HOME

这正是我一直在寻找的。显然,其他人需要同样的东西。