Jenkinsを使用しています。
ジェンキンスには上流の仕事があります:A
ジェンキンスには下流の仕事があります:B
Aのコンソールログ出力は次のとおりです。
1
2
3
Bのコンソールログ出力は次のとおりです。
A
B
C
私が取得しようとしているのは:
方法はありますか?ジョブAのコンソールログでジョブBのコンソール出力を取得し、ジョブ「A」が成功したかどうかを判断できます(ログ解析/ grepを使用して失敗/エラーなどのキーワードを使用)。
何を達成しようとしているのかわかりませんが、かなり不自然に見えます。次のアプローチがニーズに合っているかどうかを確認してください。ビルドステップとして、パラメータ化されたトリガープラグインを介してジョブAからジョブBを開始します。AがBを待機してから、Bのビルド結果に応じてAのビルド結果を調整するオプションがあります。
すばやく簡単な方法の1つは、curlを使用することです。
すなわち
curl http://myJenkinsServer:9090/job/ProjectNamel/$childJobLastBuildNumber/consoleFull | sed "s#<span class="timestamp"><b>##g;s#</b> </span># #g"
...ここで、$ childJobLastBuildNumberは、子/ダウンストリームジョブの最新/最後のビルド番号です。
curlとsedを使用する-上記のcurl|を実行すると、親ジョブで子/ダウンストリームジョブの出力を表示できるようになります。sed..実行シェルのコマンド。
ジョブBのコンソール出力を取得します。
でジョブログファイルを表示するよりも良い方法は見つかりませんでしたcat
。「ジョブBトリガー」ステップをとして行う必要がありますblock
。そのため、ジョブAはジョブBが終了するまで終了しません。次に、「ジョブBトリガー」ステップの後に、シェルスクリプトを実行するステップを追加します。
cat "$JENKINS_HOME/jobs/<PATH_TO_YOUR_JOB>/builds/$TRIGGERED_BUILD_NUMBER_<FOLDER_AND_JOB_NAME>/log"
$TRIGGERED_BUILD_NUMBER_<FOLDER_AND_JOB_NAME>
これは、Jenkinsによって動的に注入される環境変数であることに注意してください。
ジョブBに基づいてジョブAが失敗するかどうかを判断します。
ダウンストリームジョブのコンソール出力を解析する必要はありません。アップストリームジョブの構成では、ジョブBをトリガーするときに、選択できるオプションがあります。好き:
- トリガーされたビルドがより悪いか等しい場合は、このビルドステップに失敗します
- トリガーされたビルドがより悪いか等しい場合、このビルドを失敗としてマークします
- トリガーされたビルドがより悪いか等しい場合は、このビルドを不安定としてマークします