2010-03-11

RPMでhudsonをインストール

今日のトラブル: HUDSON_HOMEを変えても認識されない...。
Redmineのプラグインでお世話になっている r-labs 様提供のHudsonプラグインを導入すべく、まずはHudsonのインストールをしてみました。

テスト環境でのHudsonは、単純にhudson.warを取ってきてJavaでコマンドラインで実行していたのですが、CentOS用のRPMのパッケージ化がされているとのことなので、今回はそちらを利用することにしました。

ありがたいことに、RPM版を使うと、サービスの登録やユーザの作成まで行ってくれて、至れりつくせり。

メインの設定ファイルは/etc/sysconfig/hudson になりますが、こちらを見て、$HUDSON_HOMEをデフォルトの /var/lib/hudson を変更することにしました。
(それに合わせて、インストール時に自動で作成された /var/lib/hudson は削除しました)

その後、service hudson start で起動したのですが、どうしても、以下のエラー?が出てしまいます。

# /etc/rc.d/init.d/hudson start
Starting Hudson runuser: warning: cannot change directory to /var/lib/hudson: そのようなファイルやディレクトリはありません


一応、サービスは起動し、指定した$HUDSON_HOMEにも必要なものが展開されるのですが、どうにも感じがよくありません。serviceコマンド経由でも、init.dからの起動でも(結局同じなので)、上記のWarningは消えてくれません。

仕方がないので、一度サービスからの登録を削除して、再度手動で追加すると、Warningが出なくなりました。

# chkconfig --del hudson
# chkconfig --list hudson
サービス hudson は chkconfig をサポートしますが実行レベルで参照されていません (run 'chkconfig --add hudson')
# chkconfig --add hudson
# chkconfig --list hudson
hudson 0:off 1:off 2:off 3:on 4:off 5:on 6:off
# chkconfig hudson on
# chkconfig --list hudson
hudson 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# /etc/rc.d/init.d/hudson start
Starting Hudson [ OK ]

さて、これでひと安心。

HudsonはCIツールなのですが、個人的にはソースコードのビルドというタスクには利用しません。
どちらかというと、DBのバックアップやインデックスの再構築、シェルで作成したメンテナンス用のタスクの管理に使おうと思っています。

* * * 補足 * * *

嬉しいなと思ったのは、ジョブ(タスク)のスケジューリングや依存関係の設定ができること。 Cronだと、いろんなステップを踏んだ処理を実行させる場合、1つのスクリプトに全部書かないと難しいのですが、逆に、どこか途中で失敗しても、その原因がつかみにくくなります....。 Windowsサーバの場合は、SQL ServerのIntegration Services(SSIS)+SQL Agentの機能を使って、細かくステップ分けした処理を、1つのジョブとしてパッケージ化して集中管理していました。 でも、Linuxとかの環境だと、どうしたらいいものか...と思っていたところに、Hudsonはなんとなく使えそう、と分かってきました。なお、UIが可愛い、というのも大きなモチベーションの一つです。