2012-03-24 278 views
1

我有一个工作失败的奴隶,建立好主人。 SVN安装在主站上的相同位置和从站/usr/local/bin/svn上。我有一个Jenkins用户在奴隶,它可以运行svn --version好。詹金斯奴隶无法找到svn

[INFO] Executing: /bin/sh -c cd /var/jenkins/workspace/projecta && svn --non-interactive update /var/jenkins/workspace/projecta

[ERROR] Provider message: 
[ERROR] The svn command failed. 
[ERROR] Command output: 
[ERROR] /bin/sh: svn: not found 

我使用Subversion的插件,并能正常工作的奴隶,并在作业开始运行。问题似乎是一些模块使用maven build编号插件。

正如你在上面的日志中看到的,这个脚本似乎是作为Jenkins用户在从服务器上运行的,并且在不同版本的主机上提取客户端。

所以,我认为它是用Subversion插件版本检查代码,然后尝试在主机的PATH上更新旧版本。这一切都工作正常,因为这只有一个版本的SVN。

+0

您可以提供完整的日志以及config.xml作业吗? – 2012-03-24 16:59:36

+1

如果从Jenkins用户的提示符运行'/ bin/sh -c svn - 非交互式更新/ var/jenkins/workspace/projecta'会怎么样? – 2012-03-24 19:19:08

+0

另一个指针:写一个包含shell构建步骤的作业,执行_env_,将其绑定到从站,并检查输出,特别是PATH。 – 2012-03-24 21:31:52

回答

7

注意:Jenkins Shell作为/ bin/sh运行,而不是bash,所以很多你期望在bash中可用的路径实际上并不存在。即使您成功运行svn --version作为jenkins用户,您可能会使用bash(因此它已将某些正常路径加载到您的PATH变量中)。

OPTION 1

以下内容添加到你的 “执行shell” 或shell脚本:

PATH = $ PATH:在/ usr/local/bin目录

这应该让它找到颠覆。但是,您必须为每项工作都做到这一点。

选择2 - 更好的选择

你的另一个选择是添加你从配置页面中的以下内容:

配置

环境变量

名= PATH value = $ PATH:/ usr/local/bin

这应该为您在此从站上运行的每个构建自动设置它。如果您认为合适,您可以在这里找到其他路径

再一次请注意,当您在从属页面上进入“系统信息”时,这将不会显示(它显示您的默认系统信息)。但是,它会被添加到每个构建

+0

谢谢,这让我在svn:找不到错误 – cdog 2012-03-27 13:11:35

+0

我曾以为使用颠覆插件意味着我不需要这样做,但我现在知道这取决于你正在运行的插件 – cdog 2012-03-27 15:02:31

+0

是的:)很高兴成为帮帮我。我认为插件只是有助于利用您系统上已有的内容。只需要一点点正确的方向哈哈。 – Sagar 2012-03-27 15:30:21