1. 程式人生 > >Jenkins 多分支構建中的郵件配置

Jenkins 多分支構建中的郵件配置

之前的《Jenkins 多分支構建》解決了多分支專案的構建問題,但是卻漏了一個問題,那就是郵件通知。
作為開發,我們的主要精力是集中在開發實現上,所以也不能每次推完程式碼之後都去等著看構建結果,我們需要在構建失敗的時候,Jenkins 能夠通知我們去處理,所以郵件配置是不可少的。
在簡單的 Freestyle 專案中,我們可以進行如下配置:
這裡寫圖片描述
然後在系統設定中配置好郵件通知就好:
這裡寫圖片描述

但是當我們使用 Pipeline 時,就需要自己在配置腳本里新增郵件傳送的配置了。
由於之前是在 node 裡新增構建命令的,它並沒有 post 這個 DSL,因此在裡面並不能在裡面使用 post{...}

配置。但是它可以使用 emailext 方法,因此,我們可以修改一下我們的指令碼,當發生異常——即構建失敗時,傳送郵件到對應的開發者。指令碼如下:

node {
    checkout scm
    echo "current branch: $BRANCH_NAME"
    try {
        if (BRANCH_NAME.startsWith("release/")) {
            sh "./gradlew clean -Ppublish assemble -PLOCAL_USERNAME=$LOCAL_USERNAME -PLOCAL_PASSWORD=$LOCAL_PASSWORD
"
} else { sh "./gradlew clean assembleTest -PLOCAL_USERNAME=$LOCAL_USERNAME -PLOCAL_PASSWORD=$LOCAL_PASSWORD" } currentBuild.result = 'SUCCESS' } catch (any) { currentBuild.result = 'FAILURE' throw any } finally { if (currentBuild.result == 'FAILURE'
) { emailext( subject: "Jenkins build is ${currentBuild.result}: ${env.JOB_NAME} #${env.BUILD_NUMBER}", mimeType: "text/html", body: """<p>Jenkins build is ${currentBuild.result}: ${env.JOB_NAME} #${env.BUILD_NUMBER}:</p> <p>Check console output at <a href="${env.BUILD_URL}console">${env.JOB_NAME} #${env.BUILD_NUMBER}</a></p>""", recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']] ) } } }

除此之外,由於這裡使用的是 Jenkins 的 Email Extension Plugin 外掛,所以還得去系統設定裡配置這個外掛的發件人相關配置。
在 Jenkins 的主介面,進入系統管理,系統設定,然後找到 Extended E-mail Notification,新增與郵件通知類似的配置,如下:
這裡寫圖片描述

以上是所有的相關配置,最後驗證我們的配置結果。
提交一下會編譯失敗的程式碼,收到郵件如下:
這裡寫圖片描述
開啟郵件裡的連結即可直接檢視控制檯裡的輸出,至此大功告成。