JenkinsからSudoコマンドを実行すると、次のエラーが表示されます:Sudo: no tty present and no askpass program specified
。
[〜#〜] nopasswd [〜#〜]エントリを/etc/sudoers
ファイルに追加することでこれを解決できることを理解しています。これにより、ユーザーjenkinsパスワードを必要とせずにコマンドを実行します。次のようなエントリを追加できます。
%jenkins ALL=(ALL)NOPASSWD:/home/me/dir/script.sh
...しかし、これは次の問題につながります: https://stackoverflow.com/questions/17414330/how-to-avoid-specifying-full-path-in-sudoers-file
次のようなエントリを追加できます。
%jenkins ALL=NOPASSWD: ALL
...しかしこれにより、ユーザーjenkinsは[〜#〜] all [〜#〜]コマンドのパスワードプロンプトを回避できます。これは少し安全ではないようです。ここに自分の選択肢が何なのか興味があり、ベストプラクティスがあれば検討する必要があります。
No tty(requiretty
insudoers)は本当の問題です。
基本的に、/ etc/sudoersファイルの次の行をコメントアウトします。
#Defaults requiretty
#Defaults !visiblepw
上記は、Unix&Linux Stack Exchangeサイトのこの質問に対する this answer から取られています。
できることの1つは、Jenkinsに「run.sh」などのスクリプトを実行させ、このスクリプト内からメイクファイルを起動して、メイクファイル内にSudoコマンドがないことを確認することです。
少し面倒ですが、少なくともセキュリティ設定を変更するリスクはありません。