モノノフ日記

普通の日記です

Jenkinsで実行ユーザをjenkins以外にしている場合でアップデートするときの罠

深遠な理由でJenkinsの実行ユーザをデフォルトのjenkins以外に設定しているケースでJenkinsのアップデートを行うと嵌まりやすい罠がありました。環境はCentOS 6.3です。

sudo yum update jenkins

yumでアップデートするとパッケージは更新されるんですが起動しなくなります。

sudo /etc/init.d/jenkins start
Starting Jenkins [ OK ]
sudo /etc/init.d/jenkins status
jenkins が停止していますが PID ファイルが残っています

なんだpidファイル残ってるのかーと /var/run/jenkins.pid を消そうとするとファイルが存在しておらず詰みます。

原因はpidファイルではなくてアップデート時に /var/log/jenkins, /var/cache/jenkins が jenkinsユーザにchownされてしまうからでした。起動スクリプト(/etc/init.d/jenkins) を読んでようやくわかりましたよ...

sudo chown -R foobar:foobar /var/cache/jenkins
sudo chown -R foobar:foobar /var/log/jenkins

Jenkins自体の実行ユーザはjenkinsが無難な気がします。Jenkinsのプロジェクト内のビルド実行は普通のシェルスクリプトなので他ユーザで実行するように書けば問題ないかと!