Jenkins(Hudson)SVN检出目录

6
在Jenkins(Hudson)中,如何更改项目的checkout位置?
我希望将项目检出到apache2的doc-root中,默认情况下Jenkins将其检出到/lib/jenkins/上的jobs目录中。
我想运行shell命令将检出的代码从jobs文件夹复制到doc-root,但即使只有一个文件被更改,它也会复制整个文件夹。
我应该考虑rsync,还是Jenkins可以做到这一点(即使使用插件)?

听起来你想让Jenkins工作将部署到你的Apache服务器? - Tony
是的。使用ftp插件,我成功地将其部署到我们的远程服务器上,但我无法将其更新到本地服务器上的代码。Apache、Jenkins和SVN都在同一台服务器上。 - heshanh
听起来你应该把 Jenkins 移开,这样你就可以只使用 FTP 插件了。不过,我想你应该能够使用作业脚本来达到相同的效果。我们的作业使用 scp 将文件从 Jenkins 工作区移动到我们需要的位置。 - Tony
嗯,我尝试了rsync但是它给了我一个错误 rsync: link_stat "/var/lib/jenkins/jobs/SVN Update - Local/workspace。 我猜这是因为我的路径中有空格和“-”。 - heshanh
我最终做了以下操作:rsync -auv ./ /var/svn/project/base/看起来它有效。 - heshanh
恭喜。将您最后的评论作为答案并接受它。 - Tony
2个回答

9

Jenkins中有一个选项可以更改工作区的位置...

在作业配置页面上,在“高级项目选项”部分下,单击“高级”按钮。

勾选“使用自定义工作区”旁边的框,并填写您希望进行检出的位置。


1
我的脚本在自定义构建工作区中。但我想要在单独的目录中进行检出?它说不允许使用绝对路径。我该怎么做? - Amit
Jenkins 会始终检出到您的工作空间 - 无论是默认还是自定义工作空间。我不确定您所说的脚本位于工作空间中,但您想要检出到另一个区域的含义是什么。 - Sagar

3

Jenkins SVN插件中没有这个选项。

然而,在Windows上,我通过使用目录联接实现了它 - 在*nix安装中,您也可以使用符号链接实现类似的效果。

具体来说,我进入了Jenkins job/myjob/workspace目录并执行了以下操作。

mklink /J junction_to_working_copy c:\my\real\working\copy

然后在 Jenkins 项目的 Subversion 配置中(在源代码管理下),对于“本地模块目录(可选)”字段,我输入了:

junction_to_working_copy

这可以很好地完成任务。

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