2016-03-23 18 views
6

私は100以上のビルドを持つJenkinsジョブを持っています。その仕事のすべてのビルドを検索して、コンソール出力に特定の文字列を持つビルドを見つける必要があります。そのためのプラグインはありますか?それ、どうやったら出来るの?コンソール出力からJenkinsジョブを検索

答えて

3

私は単にシェルでそれを行うだろう追加の要件、例えば存在しない場合:

find $JENKINS_HOME/jobs/haystack -name log -exec grep -l needle {} \; \ 
    | sed 's|.*/\(.*\)/log|\1|' 
+1

これは良い答えですが、私の開発者の一人がJenkinsサーバーにアクセスしてジョブディレクトリに対してシェルコマンドを実行できるかどうかを尋ねると、私は非常に怖いでしょう。 :) –

+0

Jenkinsジョブを作成して、それを気にするならシェルステップで実行することができます@Dave。あなた自身の答えを参照すると、コンソールでGroovyスクリプトを実行することは、シェルアクセスを許可するよりも安全だとは思えません:) – jil

1

(エラー、警告ログに関心のラインを強調しLog Parser Plugin

がありますが、情報)

ログとそのセクション内のエラー、警告、情報行の要約を表示するセクションにログを分割します。

それが簡単にビルドページ

にエラーと警告の概要を示すログ

への関心の行を検索すること、完全なログのコンテキストにエラーと警告の概要を結びます

古いログの場合、@ jilはあなたがLinux上にいると仮定して答えを出します。

+0

Linuxを想定する必要はありません。ちょうど_bash_、_find_、_grep_、および_sed_です。 Windows(cygwinやmingwなど)に簡単にインストールすることができます。既にGitを使用している場合など、既にそれらを持っている可能性があります。 – jil

5

このようなタスクでは、しばしばJenkins Script Consoleを使用します。 Groovy pluginにはスクリプトコンソールが用意されていますが、定期的にメンテナンスするためにスクリプトコンソールを使用する場合は、実行するスクリプトを管理するためのScriptler pluginも必要です。あなたの貴重なソリューションの

JOB_NAME = "My Job" 
BUILD_STRING = "Hello, world" 

def job = Jenkins.instance.items.find { it.name == JOB_NAME } 
for (build in job.builds) { 
    def log = build.log 
    if (log.contains(BUILD_STRING)) { 
    println "${job.name}: ${build.id}" 
    } 
} 
+0

FWIWは、すべてのジョブを検索するために 'def job = Jenkins.instance.items.find {true} 'を使用します。 –

+0

これは私たちのCIセットアップを動作させません。これは、現在実行中のジョブまたは完了したジョブのコンソールログを検索するかどうかを確認できますか?実行中でも完了している(失敗/不安定/成功)ジョブもすべて検索するにはどうすればよいですか? – askb

+0

@dave bacher私は得る:groovy.lang.MissingPropertyException:いいえそのようなプロパティ:クラスのビルド:java.lang.Boolean何か考えですか? – DenCowboy

0

みんなありがとう: - から

はジェンキンス管理>スクリプトコンソールを、あなたは仕事のを反復処理は、一致する文字列を探しているビルドのGroovyスクリプトを書くことができます。追加の調査の後、私はJenkinsにこれを行うためのプラグインがあることを発見しました。

https://wiki.jenkins-ci.org/display/JENKINS/Lucene-Search

これは、結果、ユーザーが検索ボックスに検索を行うことができますコンソール出力を保存します。

関連する問題