JenkinsプラグインEmail-extのバージョン2.15では、通知電子メールを作成するためにファイルを添付するためのサポートが追加されました。ビルド通知メールにビルドログを添付したいのですが、どうしたらいいのかわかりません。
ビルドログはJenkinsマスターノード(この場合はUbuntu Linux)に保存されているようです。たとえば、/var/lib/jenkins/jobs/<PROJECT_NAME>/builds/<DATE_TIME>/log
です。当然、ビルドログパスはビルドごとに変わります。 Email-extの添付ファイル機能は、デフォルトで、Jenkinsスレーブビルドマシン(この場合はMac OS X)にあるプロジェクトワークスペース内のファイルを使用します。たとえば、フォルダ/Users/<USERNAME>/Jenkins/build_agent/workspace/<PROJECT_NAME>/
を使用するようにスレーブを構成しました。
スレーブビルドマシンのワークスペースの代わりに、Email-extにマスターのファイルシステムからファイルを添付させる方法はありますか?
アドバイスをいただければ幸いです。 Email-ext wiki page 現在、添付ファイルの構成方法の例は含まれていません。
プラグインはビルドログの添付をサポートしていません。プロジェクト構成のチェックボックスをオンにするだけです。
電子メールの本文で$ {BUILD_LOG、maxLines、escapeHtml}トークンを使用して、ビルドログを含めることができます。
Email-extプラグインドキュメントの引用(利用可能 ここ ):
「利用可能なすべての電子メールトークンとそれらが表示するもののリストを表示するには、プロジェクト構成画面の電子メール拡張セクションの上部下部にあるコンテンツトークンリファレンスに関連付けられている「?」(疑問符)をクリックします。」
問題について眠り、さらに調査を行った結果、Email-extはビルド通知電子メールへのビルドログの添付をサポートしていないという結論に達しました。
ただし、そのような機能が利用可能になるまで使用する卑劣な回避策を思いつきました。Jenkinsビルドトークンを使用して、ログファイルをマスターサーバーからスレーブのビルドワークスペースにコピーする適切なコマンドを生成します(以下の注を参照) )。
プロジェクトでは、メインのコンパイルステップの後に、新しいExecute Shellステップを追加して、適切なscp
(セキュアコピー)コマンドを生成しました。 。これはコマンドです(USERとHOSTNAMEを独自の値に置き換えてください。おそらく、個々のサーバーに合わせてパスを調整する必要があります)。
scp USER@HOSTNAME:/var/lib/jenkins/jobs/$JOB_NAME/builds/$BUILD_ID/log build.log
次に、Email-extプラグインのEmail-extAttachmentsフィールドに、次のように入力しました。
build.log
これで、ビルドログがマスターからスレーブのワークスペースにコピーされ、ビルド通知の電子メールメッセージに添付されます。メッセージ本文テンプレートから$BUILD_LOG
トークンを削除しました。
注:この特定の手法を使用するには、おそらくOpenSSHキーパスフレーズを使用して、スレーブとマスターの間にパスワードなしのsshを構成する必要があります。それについてサポートが必要な場合は、Webでssh-keygen
コマンドに関する情報を検索し、おそらく this one のようなチュートリアルを確認してください。同様のアプローチは、SSHのサポートが組み込まれていないプラットフォームでも機能するはずです。 RoboCopyまたは同様のものはWindowsシステムで動作するはずです。
編集:Email-extプラグインは、ジョブの構成画面のチェックボックスを使用して、ビルドログを通知メッセージに添付できるようになりました。 。例については、slideの回答を参照してください。
すべての最初にインストールする必要があります Email Extプラグイン 。インストール後、この手順に従ってください。
その後、適用して保存します。これで、ビルドログインの電子メールの添付ファイルが確実に届きます。ありがとうございました。
ビルドログを添付するチェックボックスをオンにすると、保存後にもオフになりますが、メールの送信後にメールに添付されていることに気付きました。