Jenkins的通知方式非常多,具體如下:
電子郵件通知
聲明構(gòu)建
RSS訂閱
構(gòu)建分發(fā)器
即時(shí)消息
IRC通知
桌面通知器
通過Notifo通知
移動(dòng)通知
短信通知
制造噪聲
極端反饋設(shè)備
電子郵件通知
電子郵件通知是持續(xù)集成中最明顯和最常見的通知形式,因此,我們這里重點(diǎn)講電子郵件通知。
我們可以在Jenkins中通過勾選E-mail Notification復(fù)選框激活Jenkins電子郵件通知,但實(shí)際上Jenkins自帶的電子郵件通知功能可定制性不強(qiáng)。通常我們推薦使用Email-Extension插件(插件安裝方法不再在此介紹),該插件允許我們定義一個(gè)更精致的電子郵件通知策略。
首先,它可以讓我們自定義電子郵件通知消息。我們可以定義郵件的標(biāo)題和正文,其中正文可以自定義以下內(nèi)容(括號(hào)中為預(yù)定義的標(biāo)簽):
項(xiàng)目名稱(${PROJECT_NAME})
構(gòu)建時(shí)間(${BUILD_TIMESTAMP})
當(dāng)前構(gòu)建號(hào)(${BUILD_NUMBER})
當(dāng)前構(gòu)建狀態(tài)(${BUILD_STATUS})
構(gòu)建的原因(${CAUSE})
構(gòu)建作業(yè)頁(yè)面的鏈接(${BUILD_URL})
構(gòu)建失敗的單元測(cè)試信息(${FAILED_TESTS})
自上次構(gòu)建以來所做的修改(${CHANGES})
自從上次成功構(gòu)建以來所做的所有修改(${CHANGES_SINCE_LAST_SUCCESS})
SVN地址(${SVN_URL})
-
SVN版本(${SVN_REVISION})
等。
其次,我們可以自定義觸發(fā)條件,也就是何時(shí)發(fā)送郵件:
Always:任何一次構(gòu)建之后
Failure-1st:第一次構(gòu)建失敗
Failure-Any:任何時(shí)候構(gòu)建失敗
Failure-Still:任何連續(xù)構(gòu)建失敗
Unstable(Test Failures):任何時(shí)候構(gòu)建是不穩(wěn)定的
Unstable(Test Failures)-Still:任何連續(xù)的不穩(wěn)定構(gòu)建
Success:任何成功的構(gòu)建
Fixed:當(dāng)構(gòu)建從失敗或不穩(wěn)定變成成功
-
Before Build:每次構(gòu)建開始之前
等。
最后,我們還可以自定義通知的人,也就是郵件發(fā)給誰(shuí):
Culprits:如果已經(jīng)選擇了Developers,郵件將包含最后一次成功構(gòu)建的提交者
Developers:最后一次構(gòu)建的代碼提交者
Recipient List:收件人列表,即“Project Recipient List ”列表中的所有人
Requester:構(gòu)建觸發(fā)者
Suspects Causing Unit Tests to Begin Failing:導(dǎo)致單元測(cè)試失敗的人
Suspects Causing the Build to Begin Failing:導(dǎo)致構(gòu)建失敗的人
Upstream Committers:上次構(gòu)建成功后提交修改的每個(gè)人
好的實(shí)踐
經(jīng)過實(shí)踐,我們發(fā)現(xiàn):開發(fā)人員更關(guān)心的是構(gòu)建失敗,因?yàn)樗枰皶r(shí)知道構(gòu)建失敗的結(jié)果并及時(shí)進(jìn)行修復(fù),而團(tuán)隊(duì)負(fù)責(zé)人更關(guān)心的是構(gòu)建失敗是否有人及時(shí)修復(fù)。因此,為了減少郵件通知分散大家精力,我們建議采用以下電子郵件通知策略:
第一次構(gòu)建失敗只發(fā)送給提交更改的開發(fā)人員
任何連續(xù)構(gòu)建失敗同時(shí)發(fā)送給團(tuán)隊(duì)負(fù)責(zé)人
構(gòu)建失敗之后的首次構(gòu)建成功同時(shí)發(fā)送給團(tuán)隊(duì)負(fù)責(zé)人
如下圖所示:其中收件人列表中放置團(tuán)隊(duì)負(fù)責(zé)人。