Ошибка Jenkins: «Невозможно удалить файл» при вызове Ant - PullRequest
7 голосов
/ 02 октября 2011

Я запускаю Jenkins 1.433 в Ubuntu 11.04, чтобы выполнить сборку, включающую задачу Ant.Часть clean моей задачи Ant, которая удаляет каталог build из предыдущих сборок, будет работать при запуске sudo Ant из терминала, но завершится с ошибкой из Jenkins со следующим:

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

Ant install, на которую ссылается Jenkins, работает из командной строки (usr/bin/ant), и проект Jenkins специально указывает на этот экземпляр (а не на Default).Понимая, что это проблема с правами доступа, я попробовал следующее:

  • chown -R соответствующий каталог build, установив для его владельца значение jenkins.
  • Выполнение chmod 777в каталоге.
  • Временное предоставление jenkins имени пользователя возможности запускать вещи без пароля (путем редактирования файла sudoers с помощью строки jenkins ALL = NOPASSWD:ALL).

Ни один из этих подходовworkd.Должен ли я запустить 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 ]

6 голосов
/ 03 октября 2011

Как выяснилось, все, что требовалось, - это установить для владельца каталога parent значение jenkins.

Ничего себе - это был долгий путь для такого простого ответа!

1 голос
/ 02 октября 2011

Кто управляет Дженкинсом? Это вопрос. Есть пользователь, который запускает Java-процесс на сервере Jenkins. Вам нужно найти этого пользователя. Попробуйте это:

 $ ps -ef | grep "jenkins"

и посмотри, что получишь.

Зная, что вас зовут Matt , и я вижу, что файл, который нельзя удалить, находится в каталоге / home / mattcarp , что-то говорит мне, что происходит что-то странное , Мое первое предположение состоит в том, что Jenkins не выполняется пользователем mattcarp.

  • Как устанавливается Дженкинс? Он установлен как собственный пользователь в своем собственном каталоге? Обычно это так. Например, вы устанавливаете Jenkins в /home/jenkins, и все задания находятся в /home/jenkins/jobs, а рабочее пространство для задания foo находится в /home/jenkins/jobs/foo/workspace. Почему Дженкинс смотрит на ваш каталог $HOME?
  • Как работает файл Ant build.xml? Вы жестко программируете каталог /home/mattcarp/workspace/... в файле build.xml? Если это так, вам нужно переделать build.xml, чтобы использовать его текущее дерево каталогов, а не кодировать его жестко.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...