11月 16
2011

サーバでJenkinsを使ってCIを行っているのですが、ちょっとした実験するときに自分のMac上で動かしてみたいと思い、jenkins-ci.org からネイティブパッケージ(Mac用インストーラ)を持ってきてインストールしてみました。

今回利用したJenkinsのバージョンは ver. 1.439 です。

インストーラを、ダブルクリック!

終了したら、http://localhost:8080/ をブラウザでアクセスすればOK!

のはずですが、おかしい (^_^;
Winstone Servlet Containerさんが、コンテナがないよ。ってエラーを返してきます。

ここは、素直に/var/log/system.log を見てみます。

java.io.FileNotFoundException: /Users/Shared/Jenkins/Home/war/META-INF/MANIFEST.MF (No such file or directory)

なるほど、例外が出てます。
たしかに、こんなファイルは無いですし、ディレクトリもありません。
では、自動起動用のplistを見てみます。

more /Library/LaunchDaemons/org.jenkins-ci.plist

ユーザがデーモン(daemon)さんで起動するようになってますね。
起動スクリプトの /Library/Application Support/Jenkins/jenkins-runner.sh は、問題なさそうです。
では、ファイルがないなら作成できなかっただけかな。と、思い、、、

ls -l /Users/Shares

あれれ、Jenkinsディレクトリが

drwxr-xr-x 2 root wheel 102 11 15 19:09 Jenkins

rootさんの所有になってますね。
daemonさんで起動されるのにパミッションが無いです。

sudo chown daemon /Users/Shares/Jenkins

として、オーナーをdaemonさんに変更します。
Jenkinsさんを再起動しましょう。

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

よしよし、これでhttp://localhost:8080/ で見慣れたJenkinsさんが現れてくれました。

でも、この対応ってあんまりよろしくないんですよね。
たとえば、Gitなんかを使うときに認証鍵とかを使う場面が多々あるのですが、daemonさんのHOMEは、/var/rootなので、/Users/Shares/Jenkins/HOMEに鍵をおいてもそのままじゃだめなんですよね。dscl コマンドでちゃんとユーザ設定しないと競合しちゃいます。ま、今回はこれでいいか。。。

これって、インストーラのバグなのかな? 私の環境だけなのか。
同じ症状の方がいらっしゃったら教えてください。バグ報告します。

追記:jenkins-ci.orgのBug Trackerにも同じ事象の方がいらっしゃいました。明らかBugですかね。