Я использую последнюю версию Jenkins на CentOS. В моей работе Jenkins я могу выполнять шаги пост-сборки и включать эту команду,
sudo /bin/rm /usr/java/jboss/server/default/deploy/myclient-1.0.war
который умирает с ошибкой
sudo: sorry, you must have a tty to run sudo
Есть ли способ переписать приведенное выше, чтобы запустить команду через tty-оболочку? В нашем файле / etc / sudoers у нас есть строка
Defaults requiretty
но наш системный администратор запретил нам комментировать это.
У меня тоже была эта проблема при попытке запустить jboss как пользователь jboss. Проблема была решена изменением строки в файле /etc/init.d/jboss следующим образом:
до: su - $ JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND = 1 JBOSS_PIDFILE = $ JBOSS_PIDFILE $ JBOSS_SCRIPT -c $ JBOSS_CONFIG" 2> & 1> $ JBOSS_CONSOLE_LOG &
после: su - $ JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND = 1 JBOSS_PIDFILE = $ JBOSS_PIDFILE $ JBOSS_SCRIPT -c $ JBOSS_CONFIG 2> & 1> $ JBOSS_CONSOLE_LOG &"
но наш системный администратор запретил нам комментировать это.
Он может отключить только на jenkins
пользователь:
Defaults:jenkins !requiretty
Файлы в каталоге развертывания принадлежат
jboss
пользователь с 755 perms и Jenkins работает под пользователемjenkins
.
или сделать deploy
группа папок доступна для записи и установите бит SGID:
chmod -R g+w /usr/java/jboss/server/default/deploy/
chmod g+s /usr/java/jboss/server/default/deploy/
и добавить jenkins
пользователь к jboss
группа:
usermod -a -G jboss jenkins
тогда вы можете удалить /usr/java/jboss/server/default/deploy/myclient-1.0.war
без использования sudo
.
Если /usr/java/jboss/server/default/deploy/myclient-1.0.war
необходимо удалить root, возможно, вы делаете что-то не так. Я не могу придумать вескую причину, по которой файл должен принадлежать root.
Другой вариант - посмотреть, как ваш системный администратор думает об отключении requiretty для этой единственной команды.
Cmnd_Alias NOTTYCMD = /bin/rm /usr/java/jboss/server/default/deploy/myclient-1.0.war
Defaults!NOTTYCMD !requiretty