Jenkins的郵件提醒功能主要通過Email Extension插件來實現,它是對Mailer Plugin的擴展,我在持續集成平台Jenkins配置方法介紹中簡要介紹了Jenkins的郵件配置方法,本文介紹jenkins郵件的更多玩法。
Jenkins郵件配置
Jenkins可以配置郵件通知,比如在Jenkins構建任務之后發送郵件通知,錯誤報警等。
安裝插件:Email Extension和Email Extension Template,
Jenkins配置 Email
進入Manage Jenkins -> System Configuration -> Configure System 配置系統管理員e-mail地址
配置Extended E-mail Notification,注意SMTP Password不是郵箱密碼,為你的郵箱授權碼
拉到最下面,配置郵件通知,配置完成后,可以發一個測試郵件,查看是否配置成功
Jenkins報警規則
在模板設置的下方有個 Default Triggers 按鈕,點擊后,設定報警規則
在job的構建后操作步驟選擇" Editable Email Notification "
配置完成后,構建項目,查看控制台輸出
查看郵箱,發送成功!
Jenkins 通用郵件模板
Jenkins可以根據你配置的郵件模板格式來發送結果郵件,通過Jenkins的參數定制自己的Email模板,常用的參數key值如下:
- $BUILD_STATUS :構建結果
- $PROJECT_NAME :構建腳本名稱
- $BUILD_NUMBER :構建腳本編號
- $JOB_DESCRIPTION :構建項目描述
- $CAUSE :腳本啟動原因
- $BUILD_URL :腳本構建詳情URL地址
可以進行全局郵件配置,進入Manage Jenkins -> System Configuration -> Configure System,配置郵件默認模板。
Default Subject
Jenkins構建提醒:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Default Content
<hr/>(自動化構建郵件,無需回復!)<br/><hr/>
項目名稱:$PROJECT_NAME<br/><br/>
項目描述:$JOB_DESCRIPTION<br/><br/>
運行編號:$BUILD_NUMBER<br/><br/>
運行結果:$BUILD_STATUS<br/><br/>
觸發原因:${CAUSE}<br/><br/>
構建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><br/>
構建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><br/>
詳情:${JELLY_SCRIPT,template="html"}<br/>
<hr/>
也可以使用HTML模板,將模板內容保存為HTML文件,使用如下方式來引用:
${FILE,path="email.html"}
在pipeline中使用emailext方法發送郵件:Declarative pipeline
post {
always {
emailext (
subject: '\'構建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}\'',
body: '''${FILE,path="email.html"}''',
to: "XXXXXXX@qq.cn",
)
}
}
Groovy 腳本模板
Email Extension插件支持Groovy 腳本模板,主要步驟如下:
1、創建Groovy 腳本模板
使用Groovy+HTML語言編寫,可參考Email Extension提供的示例模板文件:
2、將腳本放到 ${JENKINS_HOME}/email-templates/目錄下。
我的JENKINS_HOME路徑為 /var/jenkins_home,將寫好的template文件放入 /var/jenkins_home/email-templates 目錄下並添加權限:
$ docker cp Pipeline-html.template jenkins:/var/jenkins_home/email-templates/Pipeline-html.template
$ docker exec -u root -it jenkins /bin/bash
root@87f12fbcc4be:/# cd /var/jenkins_home/email-templates/
root@87f12fbcc4be:/var/jenkins_home/email-templates# chmod 777 Pipeline-html-test.template
3、使用模板
使用方法如下:
-
純文本 Groovy 腳本
${SCRIPT, template="groovy-text.template"} -
HTML Groovy 腳本
${SCRIPT, template="groovy-html.template"}
比如,在pipeline中使用emailext發送郵件:
emailext (
subject: '\'構建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}\'',
body: '''${SCRIPT,template="groovy-html.template"}''',
to: "XXXXXXX@qq.cn",
)
}
構建時,郵件報如下錯誤:
Exception raised during template rendering: Failed to parse template script (your template may contain an error or be trying to use expressions not currently supported): Failed to create Script instance for class: class SimpleTemplateScript13. Reason: java.lang.SecurityException: Rejecting unsandboxed super constructor call: hudson.plugins.emailext.plugins.content.EmailExtScript() groovy.lang.GroovyRuntimeException: Failed to parse template script (your template may contain an error or be trying to use expressions not currently supported)
手動同意使用的模板方法簽名,進入Manage Jenkins -> In-process Script Approval 手動同意模板文件就可以了。
參考文檔:
不自見,故明;不自是,故彰;不自伐,故有功;不自矜,故長。——《道德經》
