日本語 : Building a matrix project

オリジナル: Building a matrix project

これは何?

Jenkinsには"マルチ構成プロジェクト"と呼ばれるジョブタイプがあり、フリースタイル・プロジェクト をビルドの設定をパラメータ化できるように拡張しています。

ここでは、このジョブスタイルがいかに便利かを説明します。あなたがJAX-WS RIを開発しているとしましょう。このプロジェクトでは、様々な異なる環境でテストする必要があります。Solaris、Linux,およびWindowsといったOS、Glassfish、TomcatおよびJettyのようなコンテナ、JDK5、JDK6などのVM、様々なStAxの実装。もし、すべての組み合わせをテストするとすれば、36通りの組み合わせが考えられます。フリースタイル・プロジェクトを使うとしたら、ほとんど同じような36個のジョブを準備する必要があります。 これは明らかに維持できるものではありません。

マルチ構成プロジェクトはこのような状況を扱えるようにデザインされています。マルチ構成プロジェクトでは、1つの設定とユーザー定義の複数のパラメータを準備し、ビルドを実行すると、そのパラメータのすべての組み合わせをビルドし、分かりやすく結果をまとめます。

テストに加えて、このジョブタイプは、複数のプラットフォーム上でのビルドでも便利です。

Alpha quality warning

この機能は、あたらしく1.122で追加されました。So be warned of possible rough edges and missing features. As usual, we appreciate your feedback on this feature. See the Matrix Project bug queue to see what's missing.

軸の設定

このジョブタイプは専用の設定パラメータを2つを用意しています。

  • JDKs: 構成軸に追加する複数のJDKを指定できます。上記のJAX-WSの例では、両方をテストするようにJDK5とJDK6をチェックします。
  • ノード: 構成軸に追加する複数のスレーブやラベルを指定できます。上記のJAX-WSの例では、Windows、SolarisおよびLinuxのラベルを作り、3種類すべてのノード上で各設定で動くように3つともチェックします。

任意の軸を追加することもできます。どの軸も名前と組み合わせに追加する複数の値を持っています。これらのユーザー定義の軸はビルドスクリプトに変数として渡されるので、ビルドスクリプトでそれらの変数を認識し、それに応じて動作するようにします。 例えば、メインのビルドがAntプロジェクトとして設定されているなら、変数をAntのプロパティとして取得します。シェルスクリプトなら、環境変数として取得します。

複数の軸、JDK、ノードを指定すると、すべての組み合わせでビルトされます。上記のJAX-WSの例では、マルチ構成プロジェクトは異なる設定を持つ36個のサブビルドで構成されます。すべてのサブプロジェクトは、SCMから全く同一のワークスペースのコピーをチェックアウトします。

ワークアラウンド

 For issue "936 Matrix parent build shouldn't consume an executor":

First find a machine (virtual or whatever) with resources making it unusable for any other work. Add it as a slave with say 10 executors and let it be "Utilize as much as possible". Then parent job will execute on it (given you don't have other such slaves) so you will not block a good executor for such a job.