web-dev-qa-db-ja.com

ワークスペースにログを表示するようにJenkinsを構成するにはどうすればよいですか?

私はCIにJenkinsを使用しています。ログを公開できるようにしたいので、何が起こっているかを確認するためにCIボックスにtelnetで接続する必要はありません。

これを行うプラグインはありますか?それとも、スクリプトを書く必要がありますか?

11
laura

私の答えは、Jenkinsが実行されているよりも異なるボックスからアプリケーションサーバー/コンテナのログファイルを読み取ることについてです。たとえば、Jenkinsを使用して戦争を構築し、それらをいくつかの環境にデプロイし、他のボックスを手動でssh/telnetすることなく、JenkinsCIサーバーからログファイルを読み取りたい場合です。

それを行うJenkinsプロジェクト/ジョブを作成できます。Jenkinsプロジェクトを作成した後、[構成]オプションがあり、その中に[ビルド]セクションにシェルスクリプトを記述できるオプションがあります。

Shell script area

スクリプトは次のようになります。

#!/bin/sh

USER=<your ssh user>
Host=<your remote Host>
LOG_DIR=<your log file location>
FILE=<your log file>

cmd="ssh $USER@$Host cat $LOG_DIR/$FILE"
echo $cmd
$cmd

または、より複雑なもの、たとえば、ユーザーが表示する環境とログファイルを選択できるように、Jenkinsジョブをビルドする前にパラメーターを渡す場合、パラメーターを選択して追加できる「このビルドはパラメーター化されます」というオプションがあります。

Adding parameters

この構成では、プロジェクトをビルドしようとすると、ユーザーには次のようなものが表示されます。

enter image description here

シェルスクリプトは、次のようなパラメータを使用できます。

#!/bin/sh

USER=<your ssh user>
LOG_DIR_DEV=<log files location in dev>
LOG_DIR_QA=<log files location in qa>

if [ $ENVIRONMENT = "dev" ]; then
  Host=<your remote Host for dev>
  LOG_DIR=$LOG_DIR_DEV
fi
if [ $ENVIRONMENT = "QA" ]; then
  Host=<your remote Host for qa>
  LOG_DIR=$LOG_DIR_QA
fi

echo ENVIRONMENT=$ENVIRONMENT
cmd="ssh $USER@$Host cat $LOG_DIR/$FILE"
echo $cmd
$cmd

ジョブをビルドした後、Jenkinsジョブコンソールのログからの出力を確認できます。例:

Console Output

ログファイルが長すぎる場合は、スクリプトで「cat」の代わりに「tail」を使用できます。

9
raspacorp

Jenkinsビルドの一般的な出力を意味する場合、これは各ビルドのWebUIの[コンソール出力]リンクから利用できます。

ビルド中にワークスペースで生成された特定のログファイルを意味する場合は、ジョブ構成の[ビルド後の手順]セクションで[アーティファクトのアーカイブ]オプションを選択できます。

そこで、ファイルパターンを指定できます。 **/*.log

そのパターンに一致するワークスペース内のファイルは、各ビルドの最後にアーカイブされ、ビルドのWebページに表示されます。

noファイルがこのパターンに一致する場合、ビルドは失敗することに注意してください。

7
Christopher Orr

ビルド中にログを作成してアーティファクトとして添付することはできますが、jenkinsコアではコンソールログをワークスペースに保存することはできません。コンソールログを保存する場合は、 ConsoleLogToWorkspaceプラグイン をインストールする必要があります。このプラグインを使用すると、jenkinsコンソールログ全体を保存できます。

2
Khai Do