動態(tài)網(wǎng)站中如何做項(xiàng)目欄六盤水seo
前言
????????在持續(xù)集成(CI)和持續(xù)部署(CD)的自動化流程中,及時(shí)通知團(tuán)隊(duì)成員關(guān)于構(gòu)建的成功或失敗是至關(guān)重要的。Jenkins,作為強(qiáng)大的CI/CD工具,提供了多種通知機(jī)制,其中郵件通知是最常用且有效的手段之一。本章節(jié)“持續(xù)集成08--Jenkins配置郵箱發(fā)送構(gòu)建信息”將詳細(xì)介紹如何在Jenkins中配置郵件發(fā)送功能,包括SMTP服務(wù)器的設(shè)置、郵件內(nèi)容的自定義以及觸發(fā)郵件發(fā)送的條件等,幫助團(tuán)隊(duì)實(shí)現(xiàn)更加高效和及時(shí)的溝通。
1、設(shè)置發(fā)送者郵箱
????????進(jìn)入Manage Jenkins--System--Jenkins Location,系統(tǒng)管理員郵件地址填寫自己的郵箱
2、系統(tǒng)郵箱通知配置(qq郵箱為例)
? ? ? ? 2.1、郵箱授權(quán)
? ? ? ? 首先進(jìn)行qq郵箱授權(quán),qq授權(quán)碼:登錄qq郵箱,進(jìn)入設(shè)置--賬號--POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù),開啟服務(wù),按照提示的驗(yàn)證方式進(jìn)行授權(quán)驗(yàn)證,生成授權(quán)碼;授權(quán)碼記得記錄下來,關(guān)閉后不可再次進(jìn)行查看。
? ? ? ? 2.2、配置郵箱?
????????進(jìn)入Manage Jenkins--System--郵箱通知,填寫內(nèi)容如圖所示;打開高級,SMTP認(rèn)證用戶名要和我們上面設(shè)置的發(fā)送者郵箱一致,密碼不是我們qq郵箱密碼,不是qq郵箱密碼,不是qq郵箱密碼;此處密碼填寫上面我們生成的qq授權(quán)碼;然后勾選使用SSL協(xié)議,端口改成465。
? ? ? ? 2.3、測試郵箱發(fā)送?
????????配置完畢后可以勾選通過發(fā)送測試郵件測試配置,Test e-mail填寫郵箱地址,點(diǎn)擊右下角Test,如果出現(xiàn)成功則說明配置完成,可以到QQ郵箱查看接收到的郵件。
3、系統(tǒng)配置郵箱擴(kuò)展
? ? ? ? 3.1、安裝插件
? ? ? ? ?Jenkins安裝插件:Email Extension
? ? ? ? 3.2、配置擴(kuò)展?
????????進(jìn)入Manage Jenkins--System,找到Extended E-mail Notification,此處配置和我們郵件通知配置相似,打開高級,憑證添加方式和之前一樣,用戶名是qq郵箱,密碼不是qq郵箱密碼,不是qq郵箱密碼,是qq郵箱授權(quán)碼
? ? ? ? 3.3、開啟Debug模式
?????????配置完后建議勾打開Enable Debug Mode,在我們構(gòu)建時(shí)可以在日志輸出頁面打印出郵件相關(guān)日志,便于我們排查信息,流程走通后可以再關(guān)掉
4、項(xiàng)目郵箱通知配置
? ? ? ? 4.1、開啟郵箱通知
????????進(jìn)入項(xiàng)目配置頁,在最后增加構(gòu)建后操作步驟,選擇Editable Email Notification;
? ? ? ? 4.2、添加默認(rèn)接收人?
????????在Editable Email Notification內(nèi)先為項(xiàng)目添加一個(gè)默認(rèn)接收人
? ? ? ? ?4.3、選擇發(fā)送條件
????????打開高級設(shè)置(Advanced Settings)--打開Adding Trigger--選擇always(表示構(gòu)建發(fā)送郵件,其他選項(xiàng)包含構(gòu)建成功發(fā)送、構(gòu)建失敗發(fā)送等,根據(jù)自己需求進(jìn)行選擇)
? ? ? ? 4.4、添加接收人員
?????????Sent To表示發(fā)送對象,這里選擇的是開發(fā)人員和接收人員
? ? ? ? 4.5、配置發(fā)送內(nèi)容
?? ?????????打開高級
?? ?????????Recipient List(接收者列表):多個(gè)接收者用逗號隔開
?? ?????????Content Type(郵件內(nèi)容格式):選擇html
?? ?????????Subject(郵件主題):$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!,此模板包含項(xiàng)目名、jenkins構(gòu)建編號、構(gòu)建狀態(tài);
?? ?????????Content(郵件內(nèi)容,下面使郵件模板):
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構(gòu)建日志</title>
</head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> <br/> 本郵件由Jenkins系統(tǒng)自動發(fā)出,無需回復(fù)!<br/> 各位同事,大家好,以下為${PROJECT_NAME }項(xiàng)目構(gòu)建信息</br> </tr> <tr> <td><br /> <b><font color="#0B610B" style="font-size: 11pt">構(gòu)建信息</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul style="font-size: 11pt"> <li>項(xiàng)目名稱: ${PROJECT_NAME}</li> <li>構(gòu)建編號: 第${BUILD_NUMBER}次構(gòu)建</li> <li>觸發(fā)原因: ${CAUSE}</li> <li>構(gòu)建狀態(tài): ${BUILD_STATUS}</li><li>系統(tǒng)Allure測試報(bào)告:<a href="${PROJECT_URL}${BUILD_NUMBER}/allure">${PROJECT_URL}${BUILD_NUMBER}/allure</a></li> <li>構(gòu)建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>構(gòu)建地址: <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>項(xiàng)目地址: <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> </ul> <h4><font color="#0B610B" style="font-size: 11pt">失敗用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/><h4><font color="#0B610B" style="font-size: 11pt">最近提交</font></h4>
<hr size="2" width="100%" />
<ul style="font-size: 11pt">
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
詳細(xì)提交: <a href="${PROJECT_URL}changes" style="font-size: 11pt">${PROJECT_URL}changes</a><br/></td> </tr> </table>
</body>
</html>
? ? ? ? 4.6、構(gòu)建項(xiàng)目
????????配置完成便可進(jìn)行項(xiàng)目的構(gòu)建,測試郵件接收情況,若出現(xiàn)接收不到郵件的情況,構(gòu)建過程中查看日志輸出信息,根據(jù)失敗原因定位問題
5、 郵件發(fā)送allure報(bào)告附件
????????在構(gòu)建完成后郵件內(nèi)容只有查看報(bào)告的鏈接,無法離線查看,我們可以將allure報(bào)告文件夾壓縮后作為附件,然后進(jìn)行下載查看。
? ? ? ? 5.1、附件配置
????????路徑較深,仔細(xì)找:進(jìn)入到項(xiàng)目配置頁--找到Editable Email Notification--最下面打開Advanced Settings--Triggers欄,打開高級,也就是我們配置郵件模板的下面,找到Attachments; Attachments(附件):需要在工作空間相對路徑目錄下的文件,不能填寫絕對路徑,否則找不到文件;點(diǎn)擊the workspace可以查看工作空間,這個(gè)路徑就是我們代碼目錄,附件可以填寫allure報(bào)告文件;
? ? ? ? 5.2、壓縮文件
????????一般發(fā)送附件為壓縮文件,而非文件夾,但是我們目錄下并沒有壓縮文件,于是我就想著將allure報(bào)告文件夾壓縮后再進(jìn)行附件的發(fā)送;但是Jenkins構(gòu)建后操作并不能添加shell腳本,需要安裝插件post build task進(jìn)行構(gòu)建后執(zhí)行shell腳本,壓縮allure報(bào)告
????????安裝好插件后進(jìn)入到項(xiàng)目配置頁,拉到最后增加構(gòu)建后操作步驟,選擇post build task
?????????Script欄添加壓縮allure報(bào)告文件夾的shell腳本,注意:此步驟要移動到生成allure report和發(fā)送郵件Editable Email Notification步驟的中間,也就是說生成報(bào)告,進(jìn)行壓縮,然后再發(fā)送郵件
#!/bin/bash
# 壓縮allure_report
zip -r allure_report.zip allure_report/
?????????保存后構(gòu)建項(xiàng)目,可以看到附件來了
?
6、allure報(bào)告離線查看
? ? ? ? 附件是可以發(fā)送了,但是下載的附件解壓后會發(fā)現(xiàn)index.html頁面加載不到數(shù)據(jù)。這次因?yàn)閍llure報(bào)告需要allure服務(wù)才能進(jìn)行查看,直接打開是無法查看的。
? ? ? ? 6.1、allure報(bào)告離線查看方式一
? ? ? ? 創(chuàng)建文件一個(gè)后綴名為.bat文件,在文件內(nèi)寫入以下內(nèi)容,然后將這個(gè)文件放到我們解壓出來的報(bào)告所在文件夾下,通過雙擊運(yùn)行這個(gè)bat文件來打開報(bào)告頁面。如果內(nèi)部使用,可以將創(chuàng)建好的.bat文件提前發(fā)送給使用人,然后讓他放到報(bào)告文件夾下。
:: 【本地環(huán)境無法打開allure報(bào)告,此文件主要解決在本地打開allure報(bào)告】
@echo offif "%1" == "h" goto beginmshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit:begincd ..:: 【注意:這里的 allure_report 替換成你自己報(bào)告文件夾的名字】allure open allure_report
????????6.2、allure報(bào)告離線查看方式二(未成功)
? ? ? ? 通過單獨(dú)發(fā)送bat文件的方式需要告知接收方,如何創(chuàng)建bat文件與使用,有點(diǎn)麻煩;于是我在想如果將bat文件放到我們的項(xiàng)目代碼中,生成報(bào)告后將bat文件復(fù)制到allure報(bào)告文件夾內(nèi),然后再進(jìn)行壓縮,作為附件發(fā)送給接收方,這樣就不用讓接收方做額外的操作了。
????????開始行動: 首先將bat文件創(chuàng)建好,放到我們的代碼中(注意:linux環(huán)境不要使用中文,要用英文名);然后進(jìn)入到Jenkins項(xiàng)目配置頁,找到post build task,在shell命令壓縮文件前添加復(fù)制bat文件到報(bào)告內(nèi)的命令,然后保存,構(gòu)建項(xiàng)目
# 將bat文件添加到allure報(bào)告中,使其可以在其他設(shè)備查看allure報(bào)告
cp -r ./open_report.bat ./allure_report/
????????保存后進(jìn)行構(gòu)建,接收到郵件下載附加后解壓,通過bat文件運(yùn)行打開allure報(bào)告。。。
????????然而我無法運(yùn)行,打不開報(bào)告,系統(tǒng)卡死!!!經(jīng)過各種排查,發(fā)現(xiàn)我從本地將bat推送到gitee這一步就不行了;本地原文件可以打開報(bào)告,上傳到gitee,再從gitee下載下來這個(gè)bat就打不開報(bào)告了,這從源頭就給我按死了,至今未解決,甚是不解啊。。。
????????總結(jié):我目前只能通過方式一來進(jìn)行實(shí)現(xiàn)了,將bat文件單獨(dú)發(fā)送給接收方,讓接收方放到allure報(bào)告內(nèi)查看;方式二是一個(gè)優(yōu)化的思路,感興趣的朋友可以嘗試方式二是否正常,如果能實(shí)現(xiàn)這套流程還是非常nice的;然而,我放棄。。。后續(xù)有解決方法了再來更新吧
總結(jié)
????????通過本章節(jié)“持續(xù)集成08--Jenkins配置郵箱”的學(xué)習(xí),可以基本掌握在Jenkins中配置郵件發(fā)送功能的關(guān)鍵步驟。從SMTP服務(wù)器的配置到郵件內(nèi)容的自定義,再到觸發(fā)郵件發(fā)送的條件設(shè)置,每一步都詳細(xì)闡述了如何操作?,F(xiàn)這將大大提升團(tuán)隊(duì)的響應(yīng)速度和協(xié)作效率,為持續(xù)集成和持續(xù)部署流程的順利進(jìn)行提供有力保障。同時(shí),通過自定義郵件內(nèi)容,還可以根據(jù)實(shí)際需求調(diào)整通知的詳細(xì)程度和格式,使團(tuán)隊(duì)成員能夠更加清晰地了解構(gòu)建狀態(tài)和需要采取的行動。