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
- サーバにログインし、visudoコマンドでファイルに以下の内容を追記。(この内容は保存時点で有効になるようです)
$ 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さんに存分にお任せ出来そうです。
参考: