#ubuntu #ant #permissions #jenkins
#ubuntu #ant #разрешения #Дженкинс
Вопрос:
Я запускаю 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, на которую ссылается Дженкинс, работает из командной строки ( usr/bin/ant
), и проект Дженкинса конкретно указывает на этот экземпляр (а не на Default
). Полагая, что это проблема с разрешениями, я попробовал следующее:
chown -R
соответствующийbuild
каталог, установив его владельца наjenkins
.- Выполнение a
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
Большое спасибо за любые советы!
Комментарии:
1. Очень интересная ваша настройка. Наше рабочее пространство Jenkins находится в /home/jenkins, а не в /usr/lib/jenkins . Я также не вижу имени задания в структуре каталогов. В нашем каталоге будет
/home/jenkins/aromaTest/workspace/build.xml
Ответ №1:
Как оказалось, все, что требовалось, это установить для владельца родительского каталога jenkins
значение .
Вау — это был долгий путь для такого простого ответа!
Комментарии:
1. Я рад, что вы решили проблему. Следующее, что я бы посоветовал вам попробовать, это войти в систему как Jenkins на вашем сервере Jenkins, перейти в рабочий каталог и попробовать вручную запустить Ant оттуда. Это устранило бы ошибку с Дженкинсом. Теперь, зная, что Дженкинса нет на картинке, вы бы посмотрели на свою среду и обнаружили проблему с каталогом. Лучший способ решить проблему сборки — попробовать запустить сборку в каталоге рабочей области. Сначала просто отключите задание.
2. А как насчет Windows? У меня такая же проблема в Windows.. Я знаю, что мне нужно предоставить права администратора, чтобы отключить jenkins или ant, но как..
Ответ №2:
Кто запускает Jenkins? Вот в чем вопрос. Есть какой-то пользователь, который запускает процесс Java, на котором запущен сервер Jenkins. Вам нужно найти этого пользователя. Попробуйте это:
$ ps -ef | grep "jenkins"
и посмотрите, что вы получите.
Зная, что вас зовут Мэтт, и я вижу, что файл, который нельзя удалить, находится в каталоге /home / mattcarp, что-то подсказывает мне, что происходит что-то странное. Мое первое предположение заключается в том, что Jenkins не выполняется пользователем mattcarp
.
- Как установлен Jenkins? Установлен ли он как собственный пользователь в своем собственном каталоге? Обычно так это делается. Например, вы устанавливаете Jenkins
/home/jenkins
, и все задания/home/jenkins/jobs
загружены, и рабочее пространство для заданияfoo
/home/jenkins/jobs/foo/workspace
for загружено . Почему Дженкинс просматривает ваш$HOME
каталог? - Как работает ваш Ant
build.xml
-файл? Вы жестко кодируете каталог/home/mattcarp/workspace/...
вbuild.xml
файле? Если это так, вам нужно переделать свойbuild.xml
, чтобы использовать его текущее дерево каталогов, а не жестко кодировать его.
Комментарии:
1. Спасибо за ответ! Я отредактировал свой вопрос, чтобы отразить вывод
ps
команды. Antbuild.xml
использует относительный путь к каталогу сборки, и Дженкинс был установленaptitude
в соответствии с инструкциями на сайте Дженкинса. Он находится в/var/lib/jenkins
. Я чувствую, что делаю что-то глупое с разрешениями, но я не совсем уверен, что именно…2. Кроме того, чтобы избежать каких-либо изменений, я вручную переместил файлы проекта в
/var/lib/jenkins/workspace
(это отражено в моем редактировании вопроса). Кстати, выводps -f | grep "ant"
:mattcarp 2775 2231 0 15:41 pts/0 00:00:00 grep --color=auto ant