2016-04-04 4 views
18

互換性マトリックスを定義する複数のビルドをテストする(たとえば、ブラウザとOSで)マルチ設定プロジェクトを作成しようとしています。私はJenkinsfileで単一の組み合わせの手順を定義したいと思います。Jenkinsfileでマルチ設定プロジェクトを使用する(パイプラインプラグインを作成する)

どうすればこの問題を解決できますか?私はJenkinsFileに依存するパイプラインのパラメータ化されたビルドを作成できますが、マルチコンフィギュレーションビルドに接続する方法を理解できません。

+0

賞金を受け取るということは、一般的に回答を受け入れる必要があることを意味します。 – rbellamy

答えて

4

マルチ設定プロジェクトでJenkinsfileをビルドステップとして使用することはできないようです。 JenkinsfileはジョブタイプであるPipelineジョブでも使用され、Jenkinsはジョブタイプ間の(簡単な)変換をサポートしていません。それに加えて、ビルドステップは、それがエグゼキュータスロット内の特定のノード上で実行されることを意味します。ただし、Jenkinsfileはマスター上で評価され、ビルドステップ自体で実行された場合には本質的に衝突するbuildsteps(ノードラベル付き)を定義します。

マルチコンフィギュレーションジョブを介してパイプラインをトリガし、マルチコンフィギュレーションジョブのパラメータを供給することができます。このように見えるというのが私のパイプラインの仕事は一例Jenkinsfileを持つ2つのテキストパラメータ、labelversionを持って

を(私もこれを行うには、パラメータ化トリガープラグインを使用):

node(this.label){ 
    println this.version 
} 

私のマルチ設定ジョブが持っています次の構成:

  • 選択されたノードに値alpha beta gammaversion軸カスタムとlabel軸スレーブ
  • buildstep(私は一つのノードのみを選択しているとして)事前に定義されたパラメータversion=${version}label=${label}

このセットアップは3回呼び出されているパイプラインの仕事につながると私のパイプラインジョブをトリガする「トリガー/コールは、他のプロジェクトに基づいています」毎回異なるバージョンで、指定したラベルで実行しています。

[Pipeline] node 
Running on master in /var/lib/jenkins/jobs/pipelinejob/workspace 
[Pipeline] { 
[Pipeline] echo 
gamma 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 
Finished: SUCCESS 

このソリューションは、テキストベースのパラメータまたはラベル名のみを渡す場合に機能します。 「異なるJDKでビルドする」のようなことをしたい場合は、使用するのがかなり難しくなります。私はそれがまだ役立っていることを願っています。

関連する問題