Запустить команду оболочки в 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.