私はCIにJenkinsを使用しています。ログを公開できるようにしたいので、何が起こっているかを確認するためにCIボックスにtelnetで接続する必要はありません。
これを行うプラグインはありますか?それとも、スクリプトを書く必要がありますか?
私の答えは、Jenkinsが実行されているよりも異なるボックスからアプリケーションサーバー/コンテナのログファイルを読み取ることについてです。たとえば、Jenkinsを使用して戦争を構築し、それらをいくつかの環境にデプロイし、他のボックスを手動でssh/telnetすることなく、JenkinsCIサーバーからログファイルを読み取りたい場合です。
それを行うJenkinsプロジェクト/ジョブを作成できます。Jenkinsプロジェクトを作成した後、[構成]オプションがあり、その中に[ビルド]セクションにシェルスクリプトを記述できるオプションがあります。
スクリプトは次のようになります。
#!/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ジョブをビルドする前にパラメーターを渡す場合、パラメーターを選択して追加できる「このビルドはパラメーター化されます」というオプションがあります。
この構成では、プロジェクトをビルドしようとすると、ユーザーには次のようなものが表示されます。
シェルスクリプトは、次のようなパラメータを使用できます。
#!/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ジョブコンソールのログからの出力を確認できます。例:
ログファイルが長すぎる場合は、スクリプトで「cat」の代わりに「tail」を使用できます。
Jenkinsビルドの一般的な出力を意味する場合、これは各ビルドのWebUIの[コンソール出力]リンクから利用できます。
ビルド中にワークスペースで生成された特定のログファイルを意味する場合は、ジョブ構成の[ビルド後の手順]セクションで[アーティファクトのアーカイブ]オプションを選択できます。
そこで、ファイルパターンを指定できます。 **/*.log
。
そのパターンに一致するワークスペース内のファイルは、各ビルドの最後にアーカイブされ、ビルドのWebページに表示されます。
noファイルがこのパターンに一致する場合、ビルドは失敗することに注意してください。
ビルド中にログを作成してアーティファクトとして添付することはできますが、jenkinsコアではコンソールログをワークスペースに保存することはできません。コンソールログを保存する場合は、 ConsoleLogToWorkspaceプラグイン をインストールする必要があります。このプラグインを使用すると、jenkinsコンソールログ全体を保存できます。