code

2014年10月4日 星期六

使用 Jenkins 產生自動化郵件通知報表 - Email-ext Plugin

專業的軟體工程師,會一兩套自動化工具減輕開發過程負荷,這個是必要的附加技能。但如果用的自動化工具,還必需每天親自檢查運作狀態,那就有點兩光了。最好是自動搜集資訊,主動匯整後發送通知,最基本的,至少發個信來問候一下吧!

好的自動化工具,會知道何時通知、如何通知、及通知什麼

Jenkins 本身已有內建Email Notification,但只會在專案出錯,及由出錯回復正常這兩個事件發送通知;有點不足。當然Jenkins的外掛不是掛假的,外掛排名中輩份最高,字號最老,更新最多,安裝數Top 10,就是這篇要介紹的 Email-ext Plugin

本篇相關外掛清單,過程不再贅述

目標情境

還記得本系列建構的第一個專案Google Guava嗎?當時提到他在2012年時號稱專案有286,000+個unit test嗎!!今天的情境,就是將每日測試報告的結果,使用Email-ext寄到管理者的信箱。

將測試與報表產出的工作交由 Jenkins 處理

第零步:產生測試結果

這部份不是本篇主題,以下簡短的說明使用Google Guava單元測試產出的設定

  • Maven Goal: clean package
  • JUnit Pattern: **/target/surefire-reports/*.xml

** 代表所有目錄
在有兩次以上的測試成功後,才會顯出結果的趨勢圖,哇注意到了嗎!Guava專案現在有60多萬個測試項目


第一步:設定發信 SMTP  (Gmail)

在管理Jenkins >> 設定系統
在設定的最下方有『電子郵件通知』,使用者名稱當然就是使用你在gmail的帳號,密碼可能會視你在google使用的安全性有所分別,使用SSL必需勾選連接埠465,然後勾選寄測試信,點右下角測試設定


第二步:調整全域預設信件範本


在同一個頁面的上方,還有一個『擴充電子郵件通知』,這個就是Email-ext Plugin 的設定內內容了,最基礎的內容其實比Jenkins 預載的送信通知還遜。當然這是可以調整的。Email-ext 的內容可以使用範本來產生,支援Jelly, Groove 兩種格式,其實我也不會寫,但是我們就是可以使用其它人提供的來修改囉。我們先切換到CentOS系統中,搞定以下兩點設定。

  • Email-ext 的範本有指定存放路徑,必需在 $JENKINS_HOME/email-templates
  • 使用在網路上找到的範本,lvdaqian於GitHub分享的內容https://gist.github.com/lvdaqian


# 拷貝以下內容執行
mkdir /var/lib/jenkins/email-templates

wget https://gist.githubusercontent.com/lvdaqian/10349704/raw/0c0402143a0ea1f9e6666233f32b8f0818eede99/jenkins-email-ext-clangScanReport-template.jelly -O /var/lib/jenkins/email-templates/template.jelly

chown -R jenkins:jenkins /var/lib/jenkins/email-templates

以上指令主要只是在建立目錄及下載範本回來放,接著只要設定預設的信件本文內容指定使用範本就完成了。

預設內容 : ${JELLY_SCRIPT,template="template.jelly"}

要記得將內容類型調整為HTML,並修改預設內容,欄位右方的問號圖示點下後都有詳細說明


第三步:設定專案信件觸發內容
前一步我們設定了預設的信件內容,最後只要指定何種情況下,要將信件寄送出去,送給誰。
在專案的組態中新增建置後動作,增加可編式電子郵件通知,修改收件人後請點Advanced Settings
修改Triggers,可以在Add Trigger中找到適合發送時機,我們需要日報,不管死活都要送出,選用Always


第四步:檢視結果

我們可以先在專案中測試發送信的內容
依照設定,每次專案建置後都會寄送一份資訊到指定的收件者  (上)
同時可以快速的檢視專案大略修改的內容與人員 (下)

一封圖文並茂,包含了專案變更清單、自動化測試+結果,在Jenkins完成後,就會寄送給相關的專案成員,不論是讓老闆知道專案狀態,或是讓成員知道提交的內容的缺失,都可以在早上抵達辦公室時立即得到結果;這對團隊型專案的管理是不可缺少的。還是我們的老原則『重複的事,就要交給電腦去做』,我們要做的,只是將這個原則發揮的淋漓盡致。


沒有留言:

張貼留言