web-dev-qa-db-ja.com

Jenkinsfileビルドログ

現在実行中のビルドのテキストにアクセスできる組み込み変数はありますか?

currentBuild.logcurrentBuild.buildLogのようなものを使ってみましたが、うまくいきませんでした。

15

実際には、_currentBuild.rawBuild.log_以上(非推奨ではありません)currentBuild.rawBuild.getLog(100)(最後の100行)を使用して可能です。参照: http://javadoc.jenkins-ci.org/hudson /model/Run.html#getLog-int-

10

ログを分析するための解決策をたくさん探しました。

  • 追加の承認なしにサンドボックスでスクリプトを実行したいので、rawBuildは使用できませんでした
  • 手順でteeを使用します。これは、前の手順を変更したくないため、またはログ全体をRAMにしたくないため、分析したいものではありませんでした。 (そして残念ながら私はそれをWindowsマシンで必要としました)

ジェシー・グリックスの答えに触発された解決策を見つけました:

  • My.jenkins.url/pipeline-syntax/globalsの下で、manager- variableを使用すると、manager.logContains(regexp)またはmanager.getLogMatcher(regexp)を使用してログを分析できます
  • したがって、単に確認したい場合は、ログに文字列myTestStringが含まれていることを確認するだけで、manager.logContains('.*myTestString.*')を呼び出すことができます。
  • 最初に一致した行から情報を取得したい場合は、manager.getLogMatcher(regexp)を使用できます

残念ながら、ログ全体を分析する方法は見つかりませんでした(getLogMatcherは最初に一致した行Matcherのみを返します)。だから私は現在、例えばログファイルに特別な文字列が含まれている頻度をカウントします。

8
Sergej Werfel

現在はありません。 (currentBuildのプロパティはSnippet Generator"グローバル変数に文書化されています。)

これは実装できますかなり簡単に実装できますが、巨大なビルドでは十分に拡張できません。 JENKINS-28119 は、私があなたの根本的なリクエストを推測しているものに対して、よりスケーラブルなソリューションを提供します。

3
Jesse Glick