同一マシンの同一OS上に二つのHudson環境を構築する

はじめに

運用中のHudson本体を予習なしでアップグレードするわけにはいきません。また、Hudson本体のアップグレードよりも既存環境に与える影響度合いが少ないとはいえ、プラグインを予習なしでインストール/アップグレードするのも避けたいものです。
そこで、今回の記事では、このような不安を多少なりとも払拭できるようにするために、試験用のHudson環境の構築について説明したいと思います。

なお、この記事では運用中のHudson環境に可能な限り近いハードウェア構成で試験用のHudson環境を構築することを目的として、同一マシンの同一OS上に二つのHudson環境を構築する方法について説明します。


以下では、Hudsonの起動方法の違いを簡易的に表現するためのアイコンを用います。
   : Hudsonをコマンドシェルから起動することを表します
   : HudsonをWindowsのサービスとして起動することを表します
   : HudsonをTomcatに配備して起動することを表します

二つのHudson環境を構築する前に

環境の区別に必要な要素

二つのHudson環境を区別する際に、(通常のHudson環境で)異なる値に設定する必要がある要素は次の通りです。

要素 概要
(A) : HUDSON_HOMEディレクト Hudsonの環境が構築されているディレクトリです。詳細は「Hudsonのホームディレクトリを変更する」を参照してください。
(B) : HTTPポート番号 またはの場合に異なる値に設定する必要があります。
(C) : HTTPSポート番号 またはの場合に異なる値に設定する必要がありますが、今回はポートを無効化しているものとします。
(D) : AJP13ポート番号 またはの場合に異なる値に設定する必要がありますが、今回はポートを無効化しているものとします。
(E) : JNLPスレーブ用TCPポート番号 競合しないポート番号をランダムで自動設定するようになっているので、ファイヤーウォール対策でポート番号を固定化する場合以外は設定する必要がありません。
(F) : Windowsサービス名 の場合に異なる値に設定する必要があります。
(G) : Tomcatの配備ディレクト の場合に異なる値に設定する必要があります。
JNLPスレーブ用TCPポート番号の固定化

ファイヤーウォール対策が必要な場合は、以下の手順でJNLPスレーブ用TCPポート番号を固定化します。

  • Hudsonをシャットダウンモードにして、実行中のビルドが無くなるのを待ちます。
  • Hudsonのトップ画面で[Hudsonの管理]を選択し、続けて[システムの設定]を選択します。

  • 設定画面で次の操作をします。
    1. [セキュリティを有効化]をチェックします。
    2. JNLPスレーブ用TCPポート番号の[固定]ラジオボタンを選択し、ポート番号を入力します。
    3. アクセス制御のユーザ情報から[Hudsonのユーザーデータベース]を選択します。
    4. 設定画面下部の[保存]ボタンを押します。


補足: アクセス制御を既に設定していた場合は、設定を変更する必要はありません。
補足: アクセス制御の設定は本来不要なはずですが、この設定をしないとJNLPスレーブ用TCPポート番号の設定変更が保存されません。

  • 最後にシャットダウンモードをキャンセルして設定変更を終了します。

二つのHudson環境を構築する

の場合
  • 一つ目のHudson環境を次の条件で稼動させるものとします。
要素
(A) : HUDSON_HOMEディレクト C:\Hudson\Home
(B) : HTTPポート番号 8080
(C) : HTTPSポート番号 -1 (無効)
(D) : AJP13ポート番号 -1 (無効)
(E) : JNLPスレーブ用TCPポート番号 ランダム
  • 二つ目のHudson環境を次の条件で稼動させるものとします。
要素
(A) : HUDSON_HOMEディレクト C:\Hudson\Test
(B) : HTTPポート番号 8090
(C) : HTTPSポート番号 -1 (無効)
(D) : AJP13ポート番号 -1 (無効)
(E) : JNLPスレーブ用TCPポート番号 ランダム


上記の場合、次のように起動オプションを区別することで、二つのHudson環境を同居させることができます。

> java -DHUDSON_HOME=C:\Hudson\Home -jar hudson.war --httpPort=8080 --httpsPort=-1 --ajp13Port=-1
> java -DHUDSON_HOME=C:\Hudson\Test -jar hudson.war --httpPort=8090 --httpsPort=-1 --ajp13Port=-1

補足: HTTPSポート番号はデフォルトで無効になっているので、明示的にオプションを記述する必要はありません。


の場合
  • 一つ目のHudson環境が次の条件で稼動しているものと仮定します。
要素
(A) : HUDSON_HOMEディレクト C:\Hudson\Home
(B) : HTTPポート番号 8080
(C) : HTTPSポート番号 -1 (無効)
(D) : AJP13ポート番号 -1 (無効)
(E) : JNLPスレーブ用TCPポート番号 ランダム
(F) : Windowsサービス名 hudson
  • 二つ目のHudson環境を次の条件で稼動させるものとします。
要素
(A) : HUDSON_HOMEディレクト C:\Hudson\Test
(B) : HTTPポート番号 8090
(C) : HTTPSポート番号 -1 (無効)
(D) : AJP13ポート番号 -1 (無効)
(E) : JNLPスレーブ用TCPポート番号 ランダム
(F) : Windowsサービス名 hudsontest


上記の場合、以下の手順で二つ目のHudson環境を稼動させることができます。

  • 次の3つのファイルを C:\Hudson\Test にコピーします。
    1. C:\Hudson\Home\hudson.exe
    2. C:\Hudson\Home\hudson.xml
    3. C:\Hudson\Home\hudson.war
> copy C:\Hudson\Home\hudson.exe C:\Hudson\Test\hudson.exe
> copy C:\Hudson\Home\hudson.xml C:\Hudson\Test\hudson.xml
> copy C:\Hudson\Home\hudson.war C:\Hudson\Test\hudson.war
  • C:\Hudson\Test\hudson.xmlを次のように編集します。
<service>
  <id>hudsontest</id>
  <name>hudsontest</name>
  <description>This service runs Hudson continuous integration system.</description>
  <env name="HUDSON_HOME" value="%BASE%"/>
  <!--
    if you'd like to run Hudson with a specific version of Java, specify a full path to java.exe.
    The following value assumes that you have java in your PATH.
  -->
  <executable>java</executable>
  <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\hudson.war" --httpPort=8090 --httpsPort=-1 --ajp13Port=-1</arguments>

補足: id、name、argumentsを変更します。

  • 次のコマンドを入力して、二つ目のHudson環境をWindowsサービスとして起動します。
> cd C:\Hudson\Test
> hudson.exe install
> net start hudsontest
  • これで次のようにWindowsサービスが複数個登録され、二つのHudson環境を同居させることができます。


の場合
  • 環境変数またはシステムプロパティに HUDSON_HOME が設定されていないと仮定します。
    また、Tomcatが次の条件で稼動していると仮定します。
要素
(B) : HTTPポート番号 8080
(C) : HTTPSポート番号 コネクタを無効化
(D) : AJP13ポート番号 コネクタを無効化
  • 一つ目のHudson環境が次の条件で稼動中であると仮定します。
要素
(A) : HUDSON_HOMEディレクト C:\Hudson\Home
※ JNDI変数で設定
(E) : JNLPスレーブ用TCPポート番号 ランダム
(G) : Tomcatの配備ディレクト /hudson
  • 二つ目のHudson環境を次の条件で稼動させるものとします。
要素
(A) : HUDSON_HOMEディレクト C:\Hudson\Test
※ JNDI変数で設定
(E) : JNLPスレーブ用TCPポート番号 ランダム
(G) : Tomcatの配備ディレクト /hudsontest


上記の場合、以下の手順で二つ目のHudson環境を稼動させることができます。

  • 「.war」ファイルのファイル名がTomcatの配備ディレクトリ名になるので、「hudson.war」のファイル名を「hudsontest.war」に変更します。
>copy hudson.war hudsontest.war

注意: この時点ではJNDI変数が設定されていないので、%USERPROFILE%\.hudsonがHudsonのホームディレクトリになります。

  • [\webapps\hudsontest\WEB-INF\web.xml]を編集して、JNDI変数を設定します。
  <!-- if specified, this value is used as the Hudson home directory -->
  <env-entry>
    <env-entry-name>HUDSON_HOME</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>C:\Hudson\Test</env-entry-value>
  </env-entry>
  • [Tomcat Manager]で[/hudsontest]の[再ロード]を選択し、続けて[OK]を押します。


  • 再ロードが完了すると、二つ目のHudson環境のJNDI変数が有効になり、二つのHudson環境を同居させることができます。

おわりに

  • 書いておきながらこう言うのもなんですが、もっとスマートに同居させる方法があるのではないかと思っています。より適切な手順がありましたら、コメント頂けると幸いです。
  • コマンドシェルから起動するだけでも試験用のHudson環境としては十分です。ただし、私自身はプラグインの日本語化をしたときに、の細かな環境差に悩まされました。

Hudsonのアップグレード

はじめに

Hudsonは、コアコミッタの方々が日々機能改善やバグ修正を実施してくださっているので、Loading... の通り、比較的頻繁にアップグレード版がリリースされています。このため、Hudsonは特定のバージョンを利用し続けるよりも、定期的に最新のバージョンに入れ替えて利用する方が良いと思います。
そこで、この記事では基本事項ではありますが、アップグレードの方法について説明したいと思います。


以下では、Hudsonの起動方法の違いを簡易的に表現するためのアイコンを用います。
   : Hudsonをコマンドシェルから起動することを表します
   : HudsonをWindowsのサービスとして起動することを表します
   : HudsonをTomcatに配備して起動することを表します

アップグレードの前に

Hudson本体とHUDSON_HOMEの関係について

Hudsonが必要とするディレクトリは、次の2つです。

  1. 「Hudsonの本体を配備したディレクトリ (hudson.warの内容を配備したディレクトリ)」
  2. 「Hudsonの環境を構築したディレクトリ (HUDSON_HOMEディレクトリ)」


これら2つのディレクトリの関係は、次のとおりになっています。

  • または の場合は、次のとおり、HUDSON_HOMEディレクトリの中にHudsonの本体が配備されます
HUDSON_HOMEディレクトリ (このディレクトリの中に、Hudsonの環境が構築される)
  +---...
  +---war (このディレクトリの中に、Hudsonの本体が配備される)
  • の場合は、次のとおり、HUDSON_HOMEディレクトリの中にはHudsonの本体が配備されません
HUDSON_HOMEディレクトリ (このディレクトリの中に、Hudsonの環境が構築される)
  +---...
  +---...
Tomcatのホームディレクトリ
  +---...
  +---webapps
      +---...
      +---hudson (このディレクトリの中に、Hudsonの本体が配備される)


「アップグレードすること」=「Hudsonの本体を入れ替えること」なので、

  • または の場合は、「war」の内容
  • の場合は、「hudson」の内容

を新しい「hudson.war」の内容で入れ替えれば、アップグレードが完了します。

バックアップの取得について
  • 「Hudsonの本体を配備したディレクトリ」のバックアップ

このディレクトリの内容は、通常は「hudson.war」の内容と一致しているはずなのでバックアップを取得する必要はありません。
誤って削除してしまったとしても、今まで使用していたHudsonと同じバージョンの「hudson.war」を再配備するだけで元の状態に戻すことができます。

  • 「Hudsonの環境を構築したディレクトリ」のバックアップ

私自身、アップグレードによってHudsonの環境が壊れたことはありませんが、安全を期すならこのディレクトリの内容は、バックアップを取得する必要があります。
バックアップ方法は単純で、HUDSON_HOMEディレクトリの内容を丸ごとコピーすればOKです(Administrating Hudson - バックアップとリストア参照)。

Proxyの設定について

Hudsonがアップデートサイトにアクセスできる状態になっていると、アップグレードに関して次の恩恵が受けられます。

  • 新しい「hudson.war」の有無を自動表示
  • 新しい「hudson.war」への自動アップグレード

Proxy経由でないと外部にアクセスできないネットワーク環境の場合は、この恩恵を受けるために、次の手順でProxyを設定する必要があります。

  • Hudsonのトップ画面で[Hudsonの管理]を選択し、続けて[プラグインの管理]を選択します。

  • [高度な設定]タブを選択し、続けてサーバー、ポート番号、ユーザ名、パスワードを入力してから、[保存]を押します。

シャットダウンモードについて

Hudsonには、様々なタイミングで「ビルドの実行」要求が投入されます。また、実行中のビルドが存在している可能性もあるので、Hudsonを「唐突に」停止させるわけにはいきません。
このため、Hudsonには「唐突でないタイミング」を作り出すための「シャットダウン機能」が備えられています。
「シャットダウン機能」を使用してシャットダウン状態に移行すると、シャットダウン状態がキャンセルされるまでの間、新しく投入された「ビルドの実行」が保留されます。このため、シャットダウン状態に移行して、移行前に実行中であったすべてのビルドが終了するのを待つことで、「唐突でないタイミング」で安全にHudsonを停止させることができます。

  • シャットダウン状態に移行する場合は、[Hudsonの管理]を選択し、続けて[シャットダウンの準備]を選択します。

  • 「シャットダウン中です。」のメッセージが画面内に常に表示されるようになり、新しいビルドが実行されなくなります。

  • シャットダウン状態をキャンセルする場合は、[Hudsonの管理]を選択し、続けて[シャットダウンのキャンセル]を選択します。

  • 「シャットダウン中です。」のメッセージが画面内に表示されなくなります。


注意: シャットダウン状態は、Hudsonを再起動した場合にもキャンセルされるので注意してください。

Hudsonのアップグレード

Hudsonのアップグレード ( の場合)
  • 以下の手順でHudsonを操作します。(http://localhost:8080/ でHudsonが稼動していると仮定します)。
  • Hudsonをシャットダウンモードにして、実行中のビルドが無くなるのを待ちます。
  • Hudsonのトップ画面で[Hudsonの管理]を選択し、続けて[自動でアップグレード]ボタンを押します。


補足: アップグレード可能なバージョンが存在しない場合は、[自動でアップグレード]ボタンが表示されません。

  • [hudson.war]のダウンロードとインストールが開始されます。

  • 「成功」と表示されれば、アップグレード成功です。

  • Hudsonを起動しなおして、Hudsonのトップ画面にアクセスし、Hudsonの画面右下のバージョン番号が新しくなっていれば、アップグレード完了です。

Hudsonのアップグレード ( の場合)
  • 以下の手順でHudsonを操作します。(http://localhost:8080/ でHudsonが稼動していると仮定します)。
  • Hudsonをシャットダウンモードにして、実行中のビルドが無くなるのを待ちます。
  • Hudsonのトップ画面で[Hudsonの管理]を選択し、続けて[自動でアップグレード]ボタンを押します。


補足: アップグレード可能なバージョンが存在しない場合は、[自動でアップグレード]ボタンが表示されません。

  • [hudson.war]のダウンロードとインストールが開始されます。

  • 「成功」と表示されれば、アップグレード成功です。 本来はここで[ジョブが実行中でなければ再起動]を押すことになるはずですが、Windowsサービスとは別の新たなHudsonが起動してしまうというバグがあるようなので、押してはいけません。(2011/1/3追記: このバグはHudson 1.392で修正されています)

  • 代わりに、Windowsサービスを開いてhudsonを選択し、[サービスを再起動]を押します。

  • Hudsonのトップ画面にアクセスして、Hudsonの画面右下のバージョン番号が新しくなっていれば、アップグレード完了です。

Hudsonのアップグレード( の場合)
  • 以下の手順でHudsonを操作します。(http://localhost:8080/hudson/ でHudsonが稼動していると仮定します)。
  • Hudsonをシャットダウンモードにして、実行中のビルドが無くなるのを待ちます。
  • Hudsonのトップ画面で[Hudsonの管理]を選択し、続けて[ダウンロード]リンクを選択して新しい「hudson.war」をダウンロードします。


補足: アップグレード可能なバージョンが存在しない場合は、[ダウンロード]リンクが表示されません。

  • [アプリケーション]セクション内の[/hudson]の[配備解除]を選択します。

  • [OK]を押して、[配備解除]を続行します。

  • 暫く待つと画面がリフレッシュされ、[アプリケーション]セクション内から「/hudson」が削除されます。


補足: この時点で、Tomcatのホームディレクトリ内の「webapps\hudson」ディレクトリも削除されます。

おわりに

  • アップグレードする際は、安全を期してシャットダウンモードを用いて、実行中のビルドが無い状態にしてから操作してください。
  • アップグレードする際は、安全を期してHUDSON_HOMEディレクトリのバックアップを取得してください。これで、アップグレード後に挙動がおかしくなったとしても、「バージョンアップ前のhudson.war」と合わせて、Hudsonの環境を簡単に復元できます。
  • HUDSON_HOMEディレクトリの設定を変更しない限り、今まで使用していたHUDSON_HOMEディレクトリを用いて新しいバージョンのHudsonを稼動させることができます。

Hudsonのホームディレクトリを変更する

はじめに

HudsonをWindowsサービスとして起動した場合に、Hudsonがシステム環境変数で設定した「HUDSON_HOME」を使用していないように見受けられたため、「HUDSON_HOME」の決定要素と決定順序について調査し、変更する際の一助になればと思いまとめました。
「HUDSON_HOME」の決定方法は、Administering Hudson - HUDSON_HOMEディレクトリに記載されていますが、以下はこの内容にWindows環境向けの情報を加筆したものになります。


以下では、Hudsonの起動方法の違いを簡易的に表現するためのアイコンを用います。
   : Hudsonをコマンドシェルから起動することを表します
   : HudsonをWindowsのサービスとして起動することを表します
   : HudsonをTomcatに配備して起動することを表します

HUDSON_HOMEディレクトリの決定要素

HUDSON_HOMEディレクトリの決定要素を並べると、次の通りになります。

  • (A) : %USERPROFILE%\.hudson
  • (B) : 環境変数に設定した「HUDSON_HOME」
  • (C) : 「hudson.exe」が置かれているディレクト
  • (D) : システムプロパティに設定した「HUDSON_HOME」
  • (E) : JNDI変数に設定した「HUDSON_HOME」

「hudson.exe」は、HudsonをWindowsサービスとしてインストールしたときに作成されるサービス制御用のプログラムです。

HUDSON_HOMEディレクトリの決定順序

決定要素、決定順序、Hudsonの起動方法の関係をまとめると、次の通りになります。

決定要素 決定順序
(A)
デフォルト
使用可
使用可
使用可
(B)
(A)より優先
使用可
使用可
使用可
(C)
(B)より優先
使用不可
使用可
使用不可
(D)
(C)より優先
使用可
使用可
使用可
(E)
(D)より優先
使用不可
使用不可
使用可

より局所的に適用できる設定が優先される仕組みになっています。Hudsonの起動方法と環境の構築プランに応じて、適用する決定要素を決めてください。

なお、の場合は、通常「hudson.warの内容」が配備されるディレクトリと「HUDSON_HOME」ディレクトリとが異なります。これに対して、の場合は、「HUDSON_HOME」ディレクトリ内の「war」ディレクトリの中に「hudson.warの内容」が配備されます。この違いが、JNDI変数の使用可否の違いを生み出しているものと思われます。

決定要素別のHUDSON_HOMEディレクトリの設定方法

(A)の設定方法

デフォルト値です。設定不要です。

(B)の設定方法

システム環境変数として設定するか、コマンドシェルの中で個別に設定します。

例:
> SET HUDSON_HOME=C:\Hudson\Home
(C)の設定方法

の場合にのみ使用されます。設定不要です。
ただし、厳密にはHudsonをWindowsサービスとしてインストールしたディレクトリの中に、「hudson.exe」と「hudson.xml」が作成され、この「hudson.xml」の中に次のエントリがあるので、「hudson.exe」が置かれているディレクトリが使用されます。

  <env name="HUDSON_HOME" value="%BASE%"/>
※「%BASE%」が「hudson.exe が置かれているディレクトリ」を表します。

補足:「%BASE%」を「C:\Hudson\Home」などに変更することもできます。ただし、「hudson.exeが置かれているディレクトリ」と「HUDSON_HOMEディレクトリ」は一致しているべきなので、この変更方法はお勧めしません。

(D)の設定方法

の場合は、次のように設定します。

例:
> java -DHUDSON_HOME=C:\Hudson\Home -jar hudson.war

注意: -DHUDSON_HOME=... は、-jar hudson.war より前に記述してください。


の場合は、「hudson.xml」の中で次のように設定します。

  <executable>java</executable>
  <arguments>-Xrs -Xmx256m -DHUDSON_HOME=C:\Hudson\Home -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\hudson.war" --httpPort=8080</arguments>

注意: -DHUDSON_HOME=... は、-jar "%BASE%\hudson.war" より前に記述してください。
注意: 設定後は、サービスを再起動してください。
補足:「hudson.exeが置かれているディレクトリ」と「HUDSON_HOMEディレクトリ」は一致しているべきなので、この変更方法はお勧めしません。


の場合は、[スタート] > [すべてのプログラム] > [Apache Tomcat 6.0] > [Configure Tomcat]で表示される設定画面の[Java] > [Java Options:]の中で次のように設定します。

注意: 設定後は、Tomcatを再起動してください。

(E)の設定方法

に配備されたHudsonの「webapps\hudson\WEB-INF\web.xml」の中で次のように設定します。

  <!-- if specified, this value is used as the Hudson home directory -->
  <env-entry>
    <env-entry-name>HUDSON_HOME</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>C:\Hudson\Home</env-entry-value>
  </env-entry>

注意: Hudsonをバージョンアップする場合、「webapps\hudson」ディレクトリの内容を新しい「hudson.war」の内容で刷新することになります。「webapps\hudson\WEB-INF\web.xml」の内容を変更した場合は、バージョンアップ後に再度上記の設定を行ってください。

おわりに

トラブルシューティングを目的として一時的にHUDSON_HOMEディレクトリを切り替えたい場合や、HUDSON_HOMEディレクトリを複数個使用して同一マシン上に複数個のHudsonを起動させたい場合に、上記が役立つかもしれません。

実際の動作を確認した上で書き起こしていますが、誤りなどありましたら、早急に修正しますのでご指摘ください。

Hudsonのセットアップ(Tomcatに配備して起動)

Hudsonのダウンロード

Hudsonのセットアップ(Windowsサービスとして起動) の「Hudsonのダウンロード」を参照してください。

Hudsonを配備する前に

HUDSON_HOMEの設定

HUDSON_HOMEの設定については、Hudsonのセットアップ(Windowsサービスとして起動) の「Hudsonを起動する前に」を参照してください。

UTF-8デコードの設定

URLをUTF-8でデコードするために、Tomcatの「conf\server.xml」内の「」に、「URIEncoding="UTF-8"」の設定を追記する必要があります。

例:
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8" />

注意: 上記は、HTTP用のConnectorに設定を追記した場合の例です。HTTPSやAJP1.3用のConnectorも使用している場合は、それらについても設定を追記する必要があります。また、追記後にTomcatを再起動する必要があります。

HudsonをTomcatに配備して起動

  • [配備]セクション内の[WARファイルの配備]にて、[ファイルを選択]を押します。


補足: この時点では、[ファイルを選択]の右側に「選択されていません」と表示されます。

  • 事前に取得しておいた「hudson.war」を選択して、[開く]を押します。

  • [選択されていません] が「hudson.war」になっていることを確認して、[配備]を押します。

  • 暫く待つと画面がリフレッシュされ、[アプリケーション]セクション内に「/hudson」が追加されます。

  • [Hudsonの管理]を押したときの画面に、「URLがUTF-8でデコードされていません。...」と表示されなければOKです。

OKの場合の画面例:


URIEncodingの設定に不備がある場合の画面例:


補足: 不備の原因としては、「conf\server.xml」の設定に誤記がある、Hudsonが必要とする「Connector」のうち一部だけに「URIEncoding="UTF-8"」が記述されている、設定後にTomcatを再起動していない、が考えられます。

おわりに

上記では、[Tomcat Manager]を使用した配備を紹介しましたが、より単純に次の手順でHudsonをTomcatに配備することもできます。

  1. 「hudson.war」をTomcatの「webapps」ディレクトリ直下にコピー
  2. Tomcatを再起動

しかし、この方法はTomcat全体の再起動が必要になってしまうので、Tomcatに他のサーブレットを配備している場合に不向きです。また、Hudsonは比較的頻繁に新しいバージョンがリリースされるので、バージョンアップのしやすさという観点で[Tomcat Manager]を使用した配備をお勧めします。

Hudsonのセットアップ(Windowsサービスとして起動)

Hudsonのダウンロード

Hudsonを起動する前に

Hudson環境は、デフォルトでユーザディレクトリ直下の %USERPROFILE%\.hudson (~/.hudson) に構築されますが、システム環境変数に HUDSON_HOME を設定して、Hudson環境の構築場所を指定しておく方が良いでしょう。
補足: ディレクトリ名は任意なので .hudson である必要はありません。

ただし、HudsonをWindowsサービスとして起動する場合は、システム環境変数に設定した HUDSON_HOME が使用されなくなるので、次のように一時的に環境変数 HUDSON_HOME を設定してからHudsonを起動しても構いません。

例:
> SET HUDSON_HOME=C:\Hudson\Home
> (後述のコマンドでHudsonを起動)

また、次のようにJavaシステムプロパティを用いて HUDSON_HOME を設定しても構いません。

例:
> java -DHUDSON_HOME=C:\Hudson\Home (後述の起動オプション)

Hudsonをコマンドシェルから起動

次のコマンドで簡単に起動できます。

> java -jar hudson.war

HUDSON_HOME を設定する場合は、次のコマンドで起動します。

例:
> java -DHUDSON_HOME=C:\Hudson\Home -jar hudson.war

注意: -DHUDSON_HOME=... は、-jar hudson.war より前に記述してください。


ブラウザを起動して、次のURLにアクセスするとHudsonのトップ画面が表示されます。

http://localhost:8080/

HudsonをWindowsサービスとして起動

  • Hudsonのトップ画面を開いた状態で次の操作をします。
    1. [Hudsonの管理] を選択
    2. [Windowsのサービスとしてインストール] を選択

  • [インストール先] にHudson環境を構築するディレクトリを入力して [インストール] を押します。


補足: [インストール先]には、この時点で有効な HUDSON_HOME の値が設定済みの状態になっています。
注意: HUDSON_HOME は、この時点までは使用されますが、Windowsサービスとして起動した後は使用されません。

  • [実行] を押すと、コマンドシェルから起動したHudsonが終了し、続けてWindowsサービスとしてHudsonが起動します。

  • Windowsサービスとして起動している最中は、次の画面が表示されます。起動後はHudsonのトップ画面が表示されます。

  • Windowsのサービス一覧を確認すると、"hudson"という名称でサービスが登録されていることが分かります。