Jenkins错误:调用Ant时“无法删除文件”

时间:2011-10-02 09:52:25

标签: ubuntu ant permissions jenkins

我在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传递一些属性?

更新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

非常感谢任何建议!

2 个答案:

答案 0 :(得分:6)

事实证明,所需要的只是将目录的所有者设置为jenkins

哇 - 这个简单的答案还有很长的路要走!

答案 1 :(得分:1)

谁在运行詹金斯?这就是问题所在。有一些用户正在运行运行Jenkins服务器的Java进程。你需要找到那个用户。试试这个:

 $ ps -ef | grep "jenkins"

看看你得到了什么。

知道你的名字是 Matt ,我看到无法删除的文件位于 / home / mattcarp 目录中,有些东西告诉我有些东西搞砸了继续我的第一个猜测是Jenkins没有被用户mattcarp执行。

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