Apache Continuum をインストールしてみる

いまや id:cactusman らの尽力により、日本では CI (Continuous Integration: 継続的インテグレーション) ツールといえば Hudson が有名かと存じますが、もっと CI を利用することを広めたいと思い、比較対象として皆さんも Apache Commons 等でお世話になっているかと思われる Apache が作っている Apache Continuum を紹介したいと思います。
といっても、自分も CI ツールとしては Hudson の方がいいんじゃないかと思ってるので途中で Continuum の紹介を投げ出すかもしれませんが、できる限り最後まで書きたいと思いますw


そもそも CI って何だよ、と思ってる人は id:cactusman のブログ読んでみてください。たぶん このへん やっぱりこのへん とかが参考になるんじゃないかと丸投げしてみる :-p
とにかく、今回は最初のインストールからやってみたいと思います。というか、自分も初めて Continuum を触るので実は Continuum のことよくわかってないw

環境

まずは Continuum をインストールする環境から。ご存じの通り私は FreeBSD が好きなので環境は自重せずに FreeBSD を前提に書きますが、ベースとなる部分は Apache Tomcat なので OS の違いは関係ないかと思われます。
環境は下記の通り。

  1. FreeBSD 7.0
    • 現在リリースされている FreeBSD の最新版。そういえば FreeBSD 7.1 っていつ出るんでしょうね。今 RC1 までは出てるそうですが。
    • The FreeBSD Project
  2. JDK 6
  3. Apache httpd 2.2
  4. Apache Tomcat 6.0
  5. Apache Continuum 1.2.2

環境を見るとわかるとおり、通常の httpd - mod_jk - Tomcat 構成です。ports とかを使わずに、公式サイトからダウンロードしてきて make するのも良いですね。何はともあれ、使用するのは Apache Tomcat の 6.0 系列を前提に書くってことです。
ちなみに、Continuum は Tomcat 等の AP サーバがなくてもスタンドアロンで立ち上がることには立ち上がるんですが、実運用も見据えて今回は AP サーバ上で動かします。

ダウンロード

何はともあれ、Continuum をダウンロードしてこなくちゃいけません。さくっと下記の URL からダウンロードしてきてください。なお、今回は Tomcat 上で動かすことを前提にしているので war 版をダウンロードします。

ダウンロードし終えたら、適当な場所においてください。ただし、後々の設定があるので $CATALINA_HOME/webapps に置いちゃうと言う手抜きはやめてください :-p
ここでは、/opt/continuum に置いたと仮定します。

初期設定

さて、面倒な初期設定を行います。
基本的には ここ に書いてある内容をそのまま実行するだけですが、英語ばっかりで読みにくいので日本語化もかねて実際にやってみたいと思います。

JNDI リソースの設定

Contiuum を使うためには、Tomcat にいくつかの JNDI リソースを定義する必要があるそうです。具体的にはデータソースとメールセッションの JNDI リソースとなります。では、/usr/local/apache-tomcat6.0/conf/Catalina/localhost に continuum.xml というコンテキストファイルを用意し、下記のような設定を行いましょう。ちなみに、通常は $CATALINA_HOME/conf/Catalina/localhost 配下となります。

<Context path="/continuum"
         docBase="/opt/continuum/apache-continuum-1.2.2.war">

    <Resource name="jdbc/users"
              auth="Container"
              type="javax.sql.DataSource"
              username="sa"
              password=""
              driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
              url="jdbc:derby:/usr/local/apache-tomcat6.0/work/database/users;create=true" />

    <Resource name="jdbc/continuum"
              auth="Container"
              type="javax.sql.DataSource"
              username="sa"
              password=""
              driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
              url="jdbc:derby:/usr/local/apache-tomcat6.0/work/database/continuum;create=true" />

    <Resource name="mail/Session"
              auth="Container"
              type="javax.mail.Session"
              mail.smtp.host="localhost" />

</Context>
必要な JAR のダウンロード

次は、Continuum を動かすために必要な JAR のダウンロードです。具体的には上で設定したデータソースとメールセッションを見ればわかるとおり、Apache Derby と JavaMail、そのほかに JavaBeans Activation Framework が必要となります。
ダウンロードはそれぞれ下記の場所から。

それぞれの JAR を /usr/local/apache-tomcat6.0/lib に配置します。なお、通常は $CATALINA_HOME/lib に置きます。

システムプロパティの定義

Continuum は appserver.home と appserver.base、plexus.home という3つのシステムプロパティを使うようです。これは /etc/rc.conf に次の内容を追記すれば OK です。

tomcat60_java_opts="-Dappserver.home=/usr/local/apache-tomcat6.0 -Dappserver.base=/usr/local/apache-tomcat6.0 -Dplexus.home=/usr/local/apache-tomcat6.0"

ただし、FreeBSD 以外だと /etc/rc.conf とかに記述しても意味がないので、$CATALINA_HOME/bin に setenv.sh というファイルを作り、内容は下記の通りとします。

#!/bin/sh

export CATALINA_OPTS="-Dappserver.home=$CATALINA_HOME -Dappserver.base=$CATALINA_HOME -Dplexus.home=$CATALINA_HOME"
mod_jk の設定

今回は Apache httpd 経由でアクセスするので mod_jk の設定を行います。mod_jkports からインストールしている場合は、/usr/local/etc/apache22/Includes にある mod_jk.conf.sample を mod_jk.conf にリネームした上で、下記の通り修正します。

<IfModule mod_jk.c>
	JkWorkersFile etc/apache22/workers.properties
	JkLogFile  /var/log/jk.log
	JkShmFile  /var/log/jk-runtime-status
	JkLogLevel error

	JkMount /continuum tomcat
	JkMount /continuum/* tomcat
</IfModule>

ついでに、/usr/local/etc/apache22 にある workers.properties.sample も workers.properties にリネームの上、下記の通り修正します。

worker.list=tomcat

worker.tomcat.port=8009
worker.tomcat.host=localhost
worker.tomcat.type=ajp13
ホームディレクトリの設定

FreeBSD の場合、Tomcat はデフォルトでは www ユーザで動きますが、この www ユーザは初期状態ではホームディレクトリを持っていません。ビルドツールの Maven2 はダウンロードするプラグインや依存 jar をホームディレクトリ以下に置くため、ホームディレクトリが存在していないとビルドが走りません。
そのため、root 権限で以下のコマンドを実行し、ホームディレクトリを作っておく必要があります。

# pw usermod www -d /home/www -m

起動

初期設定が終わったら、いよいよ起動してみます。
`/usr/local/etc/rc.d/tomcat6 start` で Tomcat を起動してみます。ただし、FreeBSD 以外だと $CATALINA_HOME/bin/startup.sh とするように!
Tomcat の起動後、Apache も起動しておきましょう。`/usr/local/etc/rc.d/apache22 start` ですね。FreeBSD 以外は `apachectl start` になるでしょうか。

起動が終わったら http://localhost/continuum/ にアクセスします。アクセスしたら、下のような画面が出てくると思います。管理ユーザの作成画面のようです。求められているとおりにさくさくっと登録しちゃいましょう。


  • Full Name: 管理者のフルネーム。なんでもおk。
  • Email Address: 管理者のメールアドレス。
  • Password: 管理者のパスワード。
  • Confirm Password: パスワードを再入力。

登録が完了したらログイン画面が出てきたので、さっき登録したとおりにログインを行います。ユーザ名は "admin" で、パスワードはさっき自分で登録したパスワードですね。

次に、下のような画面が現れます。基本的にそのままでいいと思いますが、気になる項目があれば適宜修正してください。


以上で、Continuum のインストールは完了です。