jenkins郵件模板錯誤(Jenkins郵件發送可修改模版)
2023-09-22 00:46:07 2
#頭條創作挑戰賽#
本文同步本人掘金平臺的文章:https://juejin.cn/post/7062327576395513887
上一篇,Jenkins Pipeline 結合 Gitlab 實現 Node 項目自動構建 我們已經實現了自動構建的功能。
在團隊合作中,項目在構建異常「或成功」時候,需要郵件通知相關的人員,這就涉及到 Jenkins 郵件發送的功能了。
安裝 Email ExtensionEmail Extension 插件允許你配置郵件通知。通過此插件,你可以自定義郵件的發送人,接受者和發送的內容。
Manage Jenkins -> Manage Plugins -> Available 。搜索 Email Extension 安裝
配置 Email Extension 參數
Manage Jenkins -> Configure System -> Extended E-mail Notification
第 1 點: Simple Mail Transfer Protocol (SMTP) 自己申請,如果不知道如何操作,請網上找答案。(應該也許不難吧...)
第 2 點: 郵件默認的接收郵件地址。
構建腳本使用Jenkins Pipeline 結合 Gitlab 實現 Node 項目自動構建的Jenkinsfile腳本補充下。
pipeline { agent any tools { nodejs "nodejs" } stages { stage('Dependency') { steps { sh 'npm install' } } stage('Build') { steps { sh 'npm run clean' sh 'npm run build' } } } // 添加的腳本內容 post { always { emailext body: '${DEFAULT_CONTENT}', subject: '${DEFAULT_SUBJECT}', to: '${DEFAULT_RECIPIENTS}', from: '${env.DEFAULT_FROM_EMAIL}' } }}複製代碼
這就很明顯了:默認發送郵箱,默認接收郵箱,默認的發送主題,默認的發送內容。都是獲取我們上一步設定的值。效果如下:
構建失敗:
構建成功:
對比上面的兩張圖,構建失敗和構建成功,的構建結果字體竟然是不同的顏色,神奇...
如果你看上一節配置 Email Extension 參數中的截圖,你可能會留意到:
構建結果 - ${BUILD_STATUS}複製代碼
color="${BUILD_STATUS}" 嗯,加上這個,不同狀態返回的構建結果字體不同顏色了?我們帶動下構建pipeline的always -> changed。觸發構建信息由失敗 -> 成功,得到下面的結果:
看來是想多了啊,並不是不同的狀態不同顏色啊。不過,如果你不介意這個bug,可以使用...
升級下需求
發送郵件需要根據不同狀態,使用特定的顏色區分。比如:成功 -> #27AE60 , 失敗 -> #E74C3C , 其他顏色 -> #F4E242
咦,這還不簡單?在默認的發送模版上添加判斷條件就行了。
然而,不支持,太慘了,得另闢蹊徑~(大霧)
經過一番搜索,Groovy Template 能夠解決這個問題。
我們更改下 pipeline 腳本:
# ...post { always { emailext body: '''${SCRIPT,}''', subject: '${DEFAULT_SUBJECT}', to: '${DEFAULT_RECIPIENTS}', from: "${env.DEFAULT_FROM_EMAIL}" }}# ...複製代碼
我們構建下。構建是成功了,但是郵箱收到的卻是:
Groovy Template file [my-email-template] was not found in $JENKINS_HOME/email-templates.複製代碼
郵件提示,機器中 $JENKINS_HOME/email-templates 下並不存在 my-email-template 模版。(笑哭)
沒有權限怎麼辦呢?咱可以通過其他方法不?
再查找資料,咦,有了 - Email Extension Plugin is not loading groovy template added via Config File Provider Plugin。通過配置文件解決,我們來見證下:
步驟 1 : 到 jenkins 平臺上操作,Manage Jenkins -> Managed Files
步驟 2 : 點擊 Add a new Config
步驟 3 : 點選類型 Extended Email Publisher Groovy Template, 點擊 Submit 按鈕提交
步驟 4 : 輸入名稱和相關的內容。請記住名稱,後續使用到。
因為截圖篇幅問題,這裡的 Content 內容並沒有截取完整,完整的內容請戳Groovy_template.html,其中的關鍵代碼如下:
.tr-title { background-color: ; }複製代碼
Groovy 官方完整模版請見官方模版Groovy Email Template
扎心了啊,老鐵(尬笑)
步驟 5 : 修正你的 pipeline 文件,請確保你輸入和正確的名字"managed:Groovy Email Template"。
# ...post { changed { emailext body: '''${SCRIPT,}''', subject: '${DEFAULT_SUBJECT}', to: '${DEFAULT_RECIPIENTS}', from: "${env.DEFAULT_FROM_EMAIL}" }}# ...複製代碼
一切就緒,我們重新構建。結果如下:
構建狀態
郵箱收到內容截圖
成功
失敗
中止
嗯~效果不錯(撒花)完結
讀者有啥其他的方法呢,可以留言交流下。更多的內容,請戳Jimmy Github Blog
文章被收錄於專欄:
相關課程
3
收藏
,