我在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
使用它的当前目录树,而不是硬编码它。