Запустить команду оболочки в jenkins как пользователь root?
Недавно я начал использовать Jenkins для интеграции. Все было хорошо, пока я не запускал задания на master node без команды оболочки, но мне нужно запускать задания как на главном, так и на ведомом node, который содержит команды оболочки. Я не могу запускать эти команды оболочки как пользователь root. Я пробовал
- Использование
SSH Keys
.
- Установка имени пользователя в командах оболочки.
- Использование
sudo
.
Я получаю ошибку permission denied
каждый раз, когда я использую любой из вышеперечисленных методов.
Ответы
Ответ 1
Вам нужно изменить разрешение для пользователя jenkins
, чтобы вы могли запускать команды оболочки.
Вы можете установить jenkins как сервис (загрузите пакет rpm), вам может потребоваться изменить порты, поскольку по умолчанию он запускает http на 8080 и AJP на порте 8009.
Следующий процесс для CentOS
1. Откройте этот script (используя VIM или другой редактор):
vim /etc/sysconfig/jenkins
2. Найдите это $JENKINS_USER
и перейдите в "root":
$JENKINS_USER="root"
3. Затем измените право собственности на дом Дженкинса, webroot и журналы:
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
4) Перезапустите Jenkins и проверьте, что пользователь был изменен:
service jenkins restart
ps -ef | grep jenkins
Теперь вы должны иметь возможность запускать задания Jenkins в качестве пользователя root, и вся команда оболочки будет выполнена как root
.
Ответ 2
Я предлагаю не запускать пользователя jenkins как root. Это может привести к тому, что операционная система и все репо будут созданы jenkins.
Запуск любого script как root - это риск безопасности, но немного более безопасный способ заключается в том, чтобы предоставить пользователю jenkins sudo доступ только для запуска script без необходимости пароля.
sudo visudo
и добавьте следующее:
jenkins ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script
Дважды проверьте свой путь через консольный журнал неудачной сборки script. Показанный здесь вариант по умолчанию.
Теперь в задаче jenkins вы можете вызвать sudo $WORKSPACE/your script
Ответ 3
Я согласен с w/oden @,
Запуск Jenkins в качестве корня также будет иметь проблемы при попытке запустить appium, потому что "Appium не будет работать, если он будет использован или установлен с sudo".
Ответ 4
Другой вариант - настроить "Slave" jenkins, который на самом деле запущен как root на главном компьютере и ограничивает его привязанными заданиями, а затем указывает вашу работу на этом подчиненном устройстве. Далеко не идеальное, но, безусловно, быстрое решение.
Ответ 5
Вам просто нужно запустить команду оболочки на машине Linux, используя привилегии Root от Jenkins.
Шаги:
1) sudo vi /etc/sudoers
2) Добавить строку:
jenkins ALL=NOPASSWD:/path of script/
3) От Jenkins запустите script на удаленной оболочке, используя sudo.
например: sudo ps -ef
4) Создайте работу Дженкинса сейчас.
Это задание запускает script на компьютере Linux с использованием привилегий root.