2012-05-10 48 views
9

Jenkinsパラメータ化されたトリガプラグインを使用して、テスト名をパラメータとして複数のテストジョブをトリガするJenkins Buildジョブがあります。これにより、複数のエグゼキュータ上で多数のテストビルドが開始され、すべて正しく実行されます。Jenkinsで下流のパラメータ化されたジョブの結果を集計する

ここで、「集約ダウンストリームテスト結果 - >すべてのダウンストリームテストを自動的に集計する」を使用して結果を集計します。ビルドジョブでこれを有効にし、指紋をセットアップして、これらが下流のジョブとして認識されるようにしました。

私は「集約テスト結果」をクリックするとダウンストリーム

テスト#1〜#3

をビルド:ビルドジョブlastBuildページでは、私は、下流のビルドとして、それらが認識されていることがわかりますただし、これらの最新情報(テスト#3)のみが表示されます。これは、ジョブが常に同じテストを実行するが、すべてが私のテストスイートのさまざまな部分を実行する場合は、良い動作である可能性があります。

関連するすべてのダウンストリームテストビルドを集約する方法がありますか。

追加: テストジョブを複製すると、集約テスト結果が機能します。これは私が多数のテストスイートを持っているので理想的ではありません。

+1

私はダウンストリームのテスト結果を集約することに非常に苦労しました。私はそれらを「手動で」集約しました。下流のジョブが完了するまで待ってから、テストレポートを親にコピーします。 –

+0

(ジョブを複製することによって)自動集計ができたら、実際には期待したことではない(テスト階層をマージしたり、グラフを集計しない)ことがわかります。私はパラメータ化されたジョブのために、手動で行った解決策を受け入れるだろう。 –

答えて

3

私が(コメントで述べたように)手動ソリューションを概説し、後でそれらを必要とする場合は詳細を提供します:

Pは、下流の仕事をすることが親ジョブとDことしてみましょう(複数のダウンストリームジョブへのアプローチを簡単に拡張できます)。

  1. インスタンスPの(ビルド)が(ポストビルドステップとしてない)ビルドステップを介しParameterized Trigger Plugin介しDを呼び出し、Dの終了するのを待ちます。他のパラメータとともに、PDパラメータに渡す - のは、それを呼びましょうPARENT_IDからPのビルドのBUILD_IDに基づきます。
  2. Dは、テストを実行し、アーティファクトとしてアーカイブします(該当する場合は、jUnitレポートとともに)。
  3. P次いでPARENT_ID介しDの適切なビルドを見つけ、外部のPython(または内部グルービー)スクリプトを実行する(あなたがDのビルド反復処理とPARENT_IDパラメータの値を調べます)。スクリプトは、DからPPのアーティファクトをコピーして発行します。

Pythonを使用している場合(これは私が行うことです) - Python JenkinsAPI wrapperを利用してください。Groovyを使用している場合 - Groovy Pluginを使用し、スクリプトをシステム・スクリプトとして実行してください。その後、Java APIを使ってJenkinsにアクセスできます。

+0

このフローの問題は、Pがまだアーティファクトをアーカイブしていないことです。通常、アーティファクトをテストするので、それをさらに分割する必要があります。 – Wernight

+0

@malenkiy_scotあなたは "それはPARENT_ID経由でDの適切なビルドを見つける"と言った。私はこれが正確に何を意味するのか分かりません。 DはPar​​ent_Idを使って何をしてコンテンツを検索できるのですか?テスト結果をZIPファイルとしてアーカイブし、zipファイル名はparent_idですか? –

関連する問題