У меня возникла проблема, похожая на эту: Как скопировать файлы в качестве действия Jenkins «после сборки», если у меня нет прав на доступ к целевому каталогу
Я готов переместить/скопировать/rsync файлы из рабочей области jenkins в
/var/www/app
с правами, установленными для
апач:апач
Я добавил Дженкинса в группу апач, но экземпляр jenkins не может копировать файлы в /var/www/app.
Я также пробовал установить привилегии /var/www/app на apache:jenkins, но Jenkins все равно продолжает выдавать ошибку: Permission denied or Operation not allowed
PS: Забыл добавить, что ОС — centOS ;)
EDIT 1: Это лог от запущенного скрипта Jenkins:
[рабочая область] $ /bin/sh -xe /tmp/hudson1379987233097some_more_numbers.sh + sh /path_to_sh_script/script.sh отправка инкрементного списка файлов
приложение/
rsync: не удалось установить разрешения для "/var/www/app/application": Операция не разрешена (1)
А это сам сценарий :)
#!/bin/баш
rsync -avzh /путь/к/jenkins/jobs/app/workspace/default/application /var/www/app ;
rsync -avzh /путь/к/jenkins/jobs/app/workspace/default/library /var/www/app ;
rsync -avzh /путь/к/jenkins/jobs/app/workspace/default/public /var/www/app ;
решение1
После долгого и плодотворного обсуждения в комментариях и послеэта ссылкапользователю удалось решить проблему, добавив
--no-perms --omit-dir-times
к rsync
вариантам.
Предварительные попытки решения проблемы:
Я думаю, если безопасность вас не волнует в течение короткого периода времени, вы можете попробовать
chmod a+rwx /var/www/app
и затем попробуйте записать в этот каталог. Обратите внимание, что если есть подкаталоги, вы должны сделать это рекурсивно с помощью:
chmod --recursive a+rwx /var/www/app
Если все прошло успешно, вы можете начать постепенно отменять разрешения, и это поможет вам точно определить проблему.
Убедитесь, что пользователь jenkins уже является членом группы apache с помощью
groups apache
решение2
У меня была похожая проблема. Я хотел записать в /var/www на localhost в Jenkins. На моем сервере /var/www принадлежит www-data, поэтому я добавил jenkins в группу www-data и сделал группу /var/www доступной для записи, но продолжал получать ошибку «отказано в доступе». Простой перезапуск службы jenkins решил проблему для меня.
решение3
Сначала добавьте ваш сервер Linux или Apache к серверу Jenkin с SSH с обменом ключами ssh. И создайте пользователя на сервере linux/apache с пользователем jenkin(unix user). Потому что если вы используете ssh для pull/push файла, jenkin использует 'jenkin' как стандартного пользователя.
Добавление пользователя Apache в группу Jenkin в Unix может помочь.