Capistrano でつくった cap タスクを、Jenkins に移行していく場合など、Jenkins のビルド(シェルスクリプト)の実行ユーザを指定したいことがある。
以下のように sudo 実行できるようにしてやればよい。
(jenkins ユーザが Jenkins を実行している想定)
sudoの設定を変える
jenkins ユーザで特定のスクリプトに限り、tty が無くても sudo できるようにする。
$ sudo /usr/sbin/visudo
# Defaults requiretty
Defaults:jenkins !requiretty
jenkins ALL=(user) NOPASSWD: /home/user/foo.sh
実行する処理をスクリプトにまとめておく
異常終了時にビルドを中止できるよう、-xe 指定で実行しておく。
/home/user/foo.sh
#!/bin/bash -xe
echo "foo"
Jenkins のビルド設定で sudo -uオプションでユーザを指定してビルドのシェルスクリプトを書く
sudo -u user /home/user/foo.sh