Jenkins 多分支構建中的郵件配置
阿新 • • 發佈:2019-02-11
之前的《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
,新增與郵件通知類似的配置,如下:
以上是所有的相關配置,最後驗證我們的配置結果。
提交一下會編譯失敗的程式碼,收到郵件如下:
開啟郵件裡的連結即可直接檢視控制檯裡的輸出,至此大功告成。