Ubuntu12.04 VPSサーバ構築手順:CI環境構築 Jenkinsユーザのsudo処理有効化設定

以下のエントリシリーズのうちの1つ:Jenkinsで諸々の処理をお願いするにあたり、恐らく幾度と無く行わせる事になるであろう『sudo』絡みの処理及びその有効化設定について。


とある作業を試そうとしたらタイトルの問題にぶつかったのでメモ。

まずはJenkinsで適当なプロジェクトを作成、シェルでsudo実行するコマンドを設定してみる。

sudo echo 'Hello, Jenkins!'


  • ビルド実行。これはエラーになる。
Started by user anonymous
Building in workspace /var/lib/jenkins/jobs/jenkins-sandbox/workspace
[workspace] $ /bin/sh -xe /tmp/hudson5043293891289983150.sh
+ sudo echo Hello, Jenkins!
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
Build step 'Execute shell' marked build as failure
Finished: FAILURE

$ sudo /usr/sbin/visudo
------------------------
# Defaults requiretty           # tty無しの場合sudoさせない
Defaults:jenkins !requiretty   # ユーザjenkinsはtty無しでsudo可能
jenkins ALL=(ALL) NOPASSWD:ALL # ユーザjenkinsはパスワード無しでsudo可能
  • Jenkinsで先程のタスクを実行してみる。今度は問題無く実行出来ました。
Started by user anonymous
Building in workspace /var/lib/jenkins/jobs/jenkins-sandbox/workspace
[workspace] $ /bin/sh -xe /tmp/hudson1427784546581462640.sh
+ sudo echo Hello, Jenkins!
Hello, Jenkins!
Finished: SUCCESS


これで諸々の作業をJenkinsさんに存分にお任せ出来そうです。

参考: