詹金斯奴隶无法找到svn

时间:2012-03-24 16:15:47

标签: svn jenkins

我有一个工作失败的奴隶,在主人身上建立好。 SVN安装在主服务器上与从服务器/usr/local/bin/svn上相同的位置。我在奴隶上有一个Jenkins用户,它可以运行svn --version确定。

[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插件,这在slave上工作正常,并在作业开始时运行。问题似乎是某些模块使用maven内部版本号插件。

正如您在上面的日志中所看到的,这是运行一个脚本,该脚本似乎作为从属服务器上的Jenkins用户运行,并在主机上获取客户端,这是另一个版本。

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

1 个答案:

答案 0 :(得分:7)

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

选项1

将以下内容添加到“Execute Shell”或shell脚本中:

PATH = $ PATH:在/ usr / local / bin中

应该让它找到颠覆。但是,您必须为每项工作执行此操作。

选项2 - 更好的选择

另一个选择是在从属配置页面上添加以下内容:

  

配置

     

环境变量

     

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

这应该为您在此从属服务器上运行的每个构建自动设置它。你可以在这里看到其他路径。

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