Дженкинс судо: нет tty присутствует и нет программы askpass, указанной с NOPASSWD

Я провожу несколько дней создание файла /etc/sudoers чтобы иметь возможность давать разрешения root пользователю jenkins. У меня есть Дженкинс, установленный на моем сервере, потому что я размещаю несколько проектов с symfony, ionic, neo4j и т. д... Проблема в том, что я не могу делать сборки в проектах с ionic, я получаю эту ошибку:sudo: no tty present and no askpass program specified. Это содержимое моего файла / etc/sudoers:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
jenkins ALL=(ALL) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

2 ответов


я протестировал решение, описанное @Jayan в комментариях к вопросу. Вы должны включить новую строку в конце файла:

решение:https://stackoverflow.com/a/24648413/54506

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
jenkins ALL=(ALL) NOPASSWD: ALL

вполне возможно, что вы добавляете неправильного пользователя в файл sudoers. Это произошло и со мной, и решение добавить запись в файл sudoers не работало для меня. Вы должны знать пользователю, что Дженкинс использует для выполнения команд. Для этого вы можете добавить шаг сборки (Execute shell) в свой jenkins со следующей командой:

whoami

затем попробуйте снова запустить задание Дженкинса и в выводе консоли вы увидите пользователя, который Дженкинс использует для выполнения команд. Затем вам нужно будет добавить этого пользователя в файл sudoers. Например, если пользователь был "tomcat", вы добавите следующую строку в конец своего файла sudoers:

tomcat ALL=(ALL) NOPASSWD: ALL

Ref: http://techrofile.com/jenkins-sudo-no-tty-present-and-no-askpass-program-specified-with-nopasswd/