8

私の知る限り、「ダウンストリーム テスト結果の集計」機能は期待どおりに動作しません (また、有用なドキュメントを見つけるのは非常に困難です)。非常によく似た機能を実現したいと思います:

Job Buildは、ジョブT1T2を並行してトリガーします(ここで、 T1は FindBugs を実行し、T2は PMD を実行します)。

シナリオ 1: T1T2が終了 したらすぐに(「結合」プラグインを使用して達成できます)、アーティファクト ( T1 /findbugs.xml およびT2 /pmd.xml)を収集したいと考えています。次に、これらが分析され、優れた統計が生成されます。

シナリオ 2 (私はこれの方が好きです): シナリオ 1 と同様ですが、分析はT1T2の一部として(並行して!) 行われます。T1T2が終了するとすぐに、分析結果が優れた統計に結合されます。

私の質問:シナリオ 1 では、ダウンストリーム プロジェクトT1およびT2 を参照する方法がわかりません。最後に成功したビルドを使用することもできますが、多くの並列ジョブを考慮すると奇妙に思えます。

シナリオ 2 では、FindBugs/PMD/Checkstyle/SLOCcount/... プラグインに必要なデータをインポートして、対応するグラフ (も?) がT1 /*T2* の外に表示されるようにする方法がわかりません。

ありがとう、カルステン

4

3 に答える 3

10

これはやや単純なシナリオの概要ですが、複数のダウンストリームジョブの場合に簡単に一般化できると思います。秘訣は、ダウンストリームジョブで「マーキング」パラメータを使用することです。

Pを親ジョブ、Dをダウンストリームジョブとします。

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

Pythonを使用している場合(それが私が行っていることです)-PythonJenkinsAPIラッパーを利用します。Groovyを使用している場合-Groovyプラグインを利用し、スクリプトをシステムスクリプトとして実行します。その後、JavaAPIを介してJenkinsにアクセスできます

于 2012-06-15T14:02:18.247 に答える
8

malenkiy_scot の投稿への 2 つの追加:

  1. 説明のステップ 3 のスクリプトは実際には必要ありません。「別のプロジェクトからアーティファクトをコピーする」ビルド ステップでは、パラメーターを含むソース ジョブを指定できます。

    たとえば、親の表記を使用して、「プロジェクト名」としてD使用することにより、ジョブの正しい実行からアーティファクトをコピーできます。D/PARENT_ID=EXPECTED_VALUE

  2. 手動で連結する代わりに、定義済みを使用できます(基本的に同じことを$JOB_NAME行います)。標準環境変数の完全なリストについては、https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariablesを参照してください。$BUILD_ID$BUILD_TAG

于 2012-08-24T13:19:46.473 に答える
-3

Jenkins プラグインhttps://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Pluginは、このような要件に役立ちます。

于 2014-05-06T12:15:01.970 に答える