詹金斯错误:调用 Ant 时'Unable to Delete File'



我在Ubuntu 11.04上运行Jenkins 1.433,以便执行包含Ant任务的构建。我的Ant任务的clean部分(从以前的构建中删除build目录)将在终端运行sudo Ant时工作,但在Jenkins中失败,并出现以下命令:

BUILD FAILED
/var/lib/jenkins/workspace/AomaTests/build.xml:47: Unable to delete directory /var/lib/jenkins/workspace/AomaTests/build

Jenkins引用的Ant安装是从命令行(usr/bin/ant)工作的,并且Jenkins项目特别指向这个实例(而不是指向Default)。认为这是权限问题,我尝试了以下操作:

  • chown -R设置相应的build目录,将其所有者设置为jenkins
  • 正在对目录执行chmod 777操作。
  • 暂时允许jenkins用户名无需密码即可运行事物(通过编辑sudoers文件中的jenkins ALL = NOPASSWD:ALL行)。

这些方法都不起作用。我应该通过不同的用户运行ant,或者通过Jenkins传递一些属性?

Update: ps -ef | grep "jenkins"的输出为:

jenkins   1647     1  0 12:28 ?        00:00:00 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/var/lib/jenkins --output=/var/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid -- /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/run/jenkins/war --httpPort=8080 --ajp13Port=-1
jenkins   1660  1647  7 12:28 ?        00:00:13 /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/run/jenkins/war --httpPort=8080 --ajp13Port=-1
mattcarp  2393  2229  0 12:31 pts/0    00:00:00 grep --color=auto jenkins

在删除失败的目录上运行ls -l(从Jenkins运行)显示:

drwxr-xr-x 2 jenkins root 4096 2011-10-03 14:49 build

非常感谢您的建议!

结果是,所需要做的就是将父目录的所有者设置为jenkins

哇,这是一个很长的路要走这么简单的答案!

谁在管理Jenkins?这就是问题所在。有一个用户在运行Java进程,Java进程在运行Jenkins服务器。你需要找到那个用户。试试这个:

 $ ps -ef | grep "jenkins"

,看你得到什么。

知道你的名字是Matt,并且我看到无法删除的文件位于/home/mattcarp目录中,这告诉我有些不对劲。我的第一个猜测是Jenkins不是由用户mattcarp执行的。

  • 如何安装Jenkins ?它是否作为自己的用户安装在自己的目录中?通常都是这么做的。例如,您将Jenkins安装在/home/jenkins中,所有作业都在/home/jenkins/jobs中,并且作业foo的工作区在/home/jenkins/jobs/foo/workspace中。詹金斯为什么要看你的$HOME目录?
  • 你的Ant build.xml文件是如何工作的?您是否在build.xml文件中硬编码目录/home/mattcarp/workspace/... ?如果你是,你需要重做你的build.xml使用它的当前目录树,而不是硬编码它。

相关内容

  • 没有找到相关文章

最新更新