持續集成:Jenkins郵件通知配置方法介紹


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)

解決方案:https://stackoverflow.com/questions/40129455/jenkins-pipeline-getting-a-security-error-how-can-i-prevent-the-error-from-be

手動同意使用的模板方法簽名,進入Manage Jenkins -> In-process Script Approval 手動同意模板文件就可以了。

參考文檔:

  1. https://github.com/jenkinsci/email-ext-plugin
--THE END--

不自見,故明;不自是,故彰;不自伐,故有功;不自矜,故長。——《道德經》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM