« たとえばgetを避ける | メイン | YAPC::Asia Tokyo 2012とスピーカーデビューと »

2012年9月23日

Jenkinsをカジュアルに5分で立てる

プロジェクトの共同開発サーバー兼CIサーバーみたいなところにJenkinsを立てることが多い。その場合、Jenkinsを立てるのはwarを起動するコマンドをdaemontoolsなりで管理するのがベタープラクティスかなーと思っている。

事前にやることはjavaを入れるのと、jenkins.warをwgetしておくだけ。

runスクリプトはこんな感じ。

#!/bin/sh
JENKINS_USER=app
JENKINS_HOME=/home/$JENKINS_USER/jenkins

exec 2>&1
exec setuidgid $JENKINS_USER \
    env JENKINS_USER=$JENKINS_USER
    env JENKINS_HOME=$JENKINS_HOME \
    java -jar $JENKINS_HOME/jenkins.war 
         --httpPort=3002 \
         --httpListenAddress=127.0.0.1

あとはNginxでプロキシさせたりする。

リポジトリ追加すればyum等のパッケージ管理システムでjenkinsを入れられるようになるけど、

  • /etc/init.d に入るのはなんか大げさ
  • 実行ユーザーもjenkinsユーザー固定になってしまう
  • WebUIの「自動アップグレード」が動かない(動くかも) (動いた。気のせいだった)

という感じなので個人的にはあまりおすすめしない。

war起動にすれば、

  • 一般ユーザー権限でカジュアルに実行可能
  • 「自動アップグレード」がカジュアルに利用可能
  • $HOME/jenkins で完結しているので可搬性があり、バックアップもしやすい

というメリットがある。

Jenkinsはごてごてしていて複雑でわかりにくそうで敬遠してしまう部分があるかもしれないけど、とりあえずこんな感じでカジュアルに立ててみて色々いじってみるのをおすすめします。

慣れてきたらjenkins-cliとか使って構成テンプレートとか作ってセットアップ自動化とかしてみれば良いんじゃないですかね。僕はまだやってないけど。

話は変わるけどhomebrewでさくっとdaemontoolsが入るのが便利。LaunchDaemonsとかよくわからないし、xmlとか書きたくない。

投稿者 Songmu : 2012年9月23日 00:59