Запустить команду оболочки в jenkins как пользователь root?
недавно я начал использовать Jenkins для интеграции. Все было хорошо, пока я не запускал задания на главном узле без команды оболочки, но я должен запускать задания на главном, а также подчиненном узле, который содержит команды оболочки. Я не могу запустить эти команды как пользователь root. Я пробовал
- используя
SSH Keys
. - настройка имени пользователя в команды shell.
- используя
sudo
.
Я permission denied
ошибка каждый раз, когда я используйте любой из вышеперечисленных методов.
5 ответов
вам нужно изменить разрешения для jenkins
user, чтобы вы могли запускать команды оболочки.
Вы можете установить jenkins как службу (загрузите пакет rpm), вам может потребоваться изменить порты, потому что по умолчанию он запускает http на 8080 и AJP на 8009 порту.
Следующий процесс для CentOS
1. Откройте этот скрипт (используя VIM или другой редактор):
vim /etc/sysconfig/jenkins
2. Найдите это $JENKINS_USER
и изменение "root":
$JENKINS_USER="root"
3. Затем измените права собственности на Jenkins home, webroot и logs:
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
.
Я бы предложил не запускать пользователя jenkins как root. Это может разоблачить операционную систему и все репо, которые Дженкинс может построить.
запуск любого скрипта от имени root является риском для безопасности, но немного более безопасным методом было бы предоставить пользователю Jenkins sudo доступ только для запуска одного скрипта без необходимости пароля.
sudo visudo
и добавить следующее:
jenkins ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script
дважды проверьте свой путь через журнал консоли неудачного сценария сборки. Здесь показано значение по умолчанию.
Теперь в задаче Дженкинса вы можете вызвать sudo $WORKSPACE/your script
Я согласен с Оденом@, Запуск Дженкинса в качестве корня также будет иметь проблему при попытке запустить appium, потому что"Appium не будет работать, если используется или установлен с sudo".
другой вариант-настроить "подчиненный" Дженкинса, который фактически работает как root на ведущем устройстве, и ограничить его связанными заданиями, а затем указать свою работу на этом подчиненном. Далеко не идеальное, но, безусловно, быстрое решение.
вам просто нужно запустить команду оболочки на Linux-машине, используя привилегии Root от Jenkins.
действия :
1) sudo vi /etc/sudoers
2) добавить строку :
jenkins ALL=NOPASSWD:/path of script/
3) из Дженкинса запустите скрипт на удаленной оболочке с помощью sudo .
например : sudo ps -ef
4) Создайте работу Дженкинса сейчас. Это задание запускает сценарий на компьютере Linux с правами root.