ファイル/etc/sudoers
のセットアップに数日を費やして、ユーザーjenkins
にrootの許可を与えることができます。 symfony、ionic、neo4jなどで複数のプロジェクトをホストしているため、サーバーにJenkinsをインストールしています。問題は、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
質問のコメントで@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ファイルにエントリを追加する解決策はうまくいきませんでした。 jenkinsがコマンドを実行するために使用している実際のユーザーを知る必要があります。このために、次のコマンドを使用してジェンキン内にビルドステップ(シェルの実行)を追加できます。
whoami
次に、jenkinsジョブを再度実行すると、コンソール出力に、jenkinsがコマンドの実行に使用しているユーザーが表示されます。次に、このユーザーをsudoersファイルに追加する必要があります。たとえば、ユーザーが「Tomcat」だった場合、次の行をsudoersファイルの最後に追加します。
Tomcat ALL=(ALL) NOPASSWD: ALL
参照: http://techrofile.com/jenkins-Sudo-no-tty-present-and-no-askpass-program-specified-with-nopasswd/