Go to content Go to navigation Go to search

Ubuntu に Hudson を入れてみた

2月 11th, 2011 by mattari

Redemin と連携できる継続的インテグレーション(CI)ツールの Hudson を Ubuntu にインストールしてみました。

手順は基本的に、 Hudson の公式 WiKi に書かれているとうりです。

Installing Hudson on Ubuntu

 

Hudsonのインストール

 

wget -q -O – http://pkg.hudson-labs.org/debian/hudson-labs.org.key | sudo apt-key add –

sudo echo "deb http://pkg.hudson-labs.org/debian binary/" > /etc/apt/sources.list.d/hudson.list

sudo apt-get update

sudo apt-get install hudson

sudo apt-get install hudson でエラーとなったら、手動でインストールします。

wget http://hudson-ci.org/latest/debian/binary/hudson_1.396_all.deb

sudo dpkg -i hudson_1.396_all.deb

一応 Subversion もインストールします。

sudo apt-get install subversion

http://localhost:8080/ にアクセスして確認します。こんなエラーが出たら、使っている Java に問題があります。

Status Code: 500

Exception: The error below occurred during context initialisation, so no further requests can be processed:
java.lang.ExceptionInInitializerError
   at java.lang.Class.initializeClass(libgcj.so.81)
   at hudson.WebAppMain.installLogger(WebAppMain.java:259)
   at hudson.WebAppMain.contextInitialized(WebAppMain.java:114)
   at winstone.WebAppConfiguration.(WebAppConfiguration.java:889)
   at winstone.HostConfiguration.initWebApp(HostConfiguration.java:131)
   at winstone.HostConfiguration.(HostConfiguration.java:73)
   at winstone.HostGroup.initHost(HostGroup.java:85)
   at winstone.HostGroup.(HostGroup.java:45)
   at winstone.Launcher.(Launcher.java:196)
   at winstone.Launcher.main(Launcher.java:391)
   at java.lang.reflect.Method.invoke(libgcj.so.81)
   at Main.main(Main.java:200)

解決策として、JPE をインストールていない場合は、インストールします。

sudo apt-get install openjdk-6-jre

ついでに、Hudson定義ファイル(/etc/default/hudson)に指定されたjavaのパスが正しいか確認します。

# location of java
JAVA=/usr/bin/java

Hudsonの再起動

sudo /etc/init.d/hudson restart

できあがり。

Hudson

 

Tips

 

Hidson に指定したシェルスクリプトは hudson アカウントで実行されるので、他のユーザのファイルを移動しようとするとアクセスエラーになります。そこで、hudson アカウントは sudo のパスワード入力無しで mv コマンドを実行できるように設定しておきます。

sudo visudo

最後の行に以下を追加。

# Hudson
hudson ALL=(ALL) NOPASSWD: /bin/mv

こんな感じのSVNサーバとのタイムスタンプが異常とかどーとかのエラーが出る場合、

hudson.subversion.SubversionSCM: Failed to estimate the remote timestamp
org.tmatesoft.svn.core.SVNAuthenticationException: svn: PROPFIND of ‘/svn‘: 403 Forbidden

ソースコード管理システムのリポシリURLに、空欄の2個目のエントリがあるのが原因のようです。これを削除すると解決しました。

Hudson2

ビルドの「シェル実行」はワークスペースの仮想パスで指定します。

build.sh —–> NG

./build.sh —–> OK

 

覚書

 

  • 定義ファイル             /etc/default/hudson
  • ホームディレクトリ     HUDSON_HOME=/var/lib/hudson
  • ワークスペース           $HUDSON_HOME/jobs/<project>/workspace
  • コマンド                   /etc/init.d/hudson

 

関連記事