我有一个工作失败的奴隶,在主人身上建立好。 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。
答案 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
这应该为您在此从属服务器上运行的每个构建自动设置它。你可以在这里看到其他路径。
再次注意,当您在从属页面上显示“系统信息”时,这将不会显示(它显示默认的系统信息)。但是,它会为每个构建添加