Jenkinsインストール

Flexでライブラリやらなんやら作ってたのですが、
一息付いたので、開発環境周りをやっとこうかと。

Jenkinsを、さくらのVPSにインストールしたいと思います。
War単体で実行や、Tomcatなどにデプロイしてもいいのですが、
せっかくRPMを提供してくれているので、
RedHat Repository for Jenkins
を参考にインストール。

$ sudo service jenkins start

で起動しますが、8080で起動するので、80で動くようにします。

Jettyの場合は、iptablesで80→8080リダイレクトしてましたが、
Jenkins以外でも使う想定だったり、他の事してみたかったりするので、
さくらVPSにjenkinsをインストールする - おもしろwebサービス開発日記
この方と同じ感じで、フロントにnginxを入れたいと思います。

nginxインストール

$ sudo yum install nginx

nginx.conf

$ sudo vi /etc/nginx/nginx.conf
http {
    ・・・
    server {
        listen      80;
        server_name example.com;

        location / {
            proxy_pass http://127.0.0.1:8080;
        }
    }
}

nginx起動

$ sudo /etc/init.d/nginx start

これで80番でjenkinsにアクセスする事が出来るようになりました。
あと地味にハマったのが、コチラhttp://blog.lunchub.com/post/12875858162/jenkins
あとコレも誤ってJenkinsにログインできなかったり、404エラーが起きたりの対処法 - anyone anywhere
ちょっと残念な感じです。

bitBucketからクローンしてビルドする。
パスワードをURLに含むわけにはいかないので、SSHで。

$ sudo -u jenkins

だと、なぜかユーザが切り替わらないので、

$ sudo -u jenkins -H ssh-keygen -t rsa

で鍵作成。
で、作成された公開鍵をbitbucketに登録。

$ sudo cat /var/lib/jenkins/.ssh/id_rsa.pub

bitbucketのアカウントのSSH keysから登録します。

一度known_hostsに登録。yesでOK。

$ sudo -u jenkins ssh bitbucket.org

これでJenkinsで、bitbucketのソースをクローンして、ビルドする事が確認出来ました。

と、ここらでURLを、http://example.com/jenkinsにしたくなったので、変更したら404が出る。
調べたところ、nginxで/jenkinsなどにリバースプロキシを設定する場合は、

$ sudo vi /etc/sysconfig/jenkins
JENKINS_ARGS="--prefix=/jenkins"

Jenkins側にもPrefixを指定する必要があるみたいです。
http://d.hatena.ne.jp/FGtatsuro/20120603/1338653541
ありがとうございました。

$ sudo vi /etc/nginx/nginx.conf
http {
    ・・・
    server {
        listen      80;
        server_name example.com;

        location /jenkins {
            proxy_pass http://127.0.0.1:8080;
        }
    }
}

bitbucketにコミットされたら、即ビルド
SCMポーリングだったり、定期実行などありますが、やっぱりフックしたいので、
https://confluence.atlassian.com/display/BITBUCKET/Setting+Up+the+Bitbucket+Jenkins+Service
ここ参考に設定しました。
bitbucketにpushしてみる。
・・・
ビルドしない・・・。
調べてみると、ビルド出来ない例も多そう。
あれこれ調べていると
http://www.tokoro.me/posts/security-for-jenkins/
Git PluginのnotifyCommitを使うやり方がいいよと言って下さってる方が。
試しにendpointに

http://example.com/jenkins/git/notifyCommit?url=url

を入れてみる。ビルドしない・・・。
curlでは、ビルドする。
あまりやりたくなかったけど、POSTで設定してみる。動く・・・。
うーん。とりあえずよしとします。

なんかスムーズには行きませんでしたが、
コミット、プッシュ→自動ビルドまで出来ました。
あとは、プラグインを色々試してみたいと思います。
お疲れ様でした。