Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 詹金斯错误:';无法删除文件';调用Ant时_Ubuntu_Ant_Permissions_Jenkins - Fatal编程技术网

Ubuntu 詹金斯错误:';无法删除文件';调用Ant时

Ubuntu 詹金斯错误:';无法删除文件';调用Ant时,ubuntu,ant,permissions,jenkins,Ubuntu,Ant,Permissions,Jenkins,我在Ubuntu11.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/buil

我在Ubuntu11.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运行时)显示:


非常感谢你的建议

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

 $ ps -ef | grep "jenkins"
看看你能得到什么

知道您的名字是Matt,并且我看到无法删除的文件在/home/mattcarp目录中,我发现有一些事情发生了。我的第一个猜测是,Jenkins没有被用户
mattcarp
执行

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

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


哇,要得到这么简单的答案真是太远了

谢谢你的回复!我编辑了我的问题以反映
ps
命令的输出。Ant
build.xml
使用到构建目录的相对路径,Jenkins是按照Jenkins站点上的说明使用
aptitude
安装的。它位于
/var/lib/jenkins
。我觉得我在权限方面做了一些愚蠢的事情,但我不太确定是什么…另外,为了避免任何变化,我手动将项目文件移动到
/var/lib/jenkins/workspace
(这反映在我对问题的编辑中)。顺便提一下,
ps-f | grep“ant”
的输出是:
mattcarp 2775 2231 0 15:41 pts/0 00:00:00 grep--color=auto ant
很高兴您解决了这个问题。接下来我要告诉您尝试的是以Jenkins的身份登录Jenkins服务器,转到工作目录,然后尝试从那里手动运行Ant。这本可以消除詹金斯的过失。现在,知道Jenkins不在图片中,您可以查看您的环境,发现目录问题。解决生成问题的最佳方法是尝试在工作区的目录中运行生成。先禁用作业。windows呢?我在windows中遇到了同样的问题。。我知道我必须提供管理员权限威瑟詹金斯或蚂蚁,但如何…非常有趣你的设置。我们的詹金斯工作区位于/home/Jenkins,而不是/usr/lib/Jenkins。我在目录结构中也看不到作业名称。在我们的目录中,目录应该是
/home/jenkins/aromatiest/workspace/build.xml
 $ ps -ef | grep "jenkins"