在此之前,我們在構建的時候,不管成功還是失敗,構建的結果都只是在Jenkins控制檯輸出。這種方式也不是不可以,但假設我們想知道項目有沒有構建,構建的結果是什麼,難道我們都要登錄Jenkins,然後一個個去看嗎?顯然不會用這種實用但過於“笨拙”的手法,今天我們說一下如果將構建結果通過郵箱發送給項目負責人。
1. 安裝插件
想要將構建結果通過郵箱發送出來,需要安裝Email Extension
插件。
2. Jenkins設置郵箱相關參數
- 設置系統管理員郵件地址
需要注意的是,郵箱要開啓相應的服務:
還有這裏需要發送短信獲取授權密碼作爲後面的密碼:
- 設置郵件參數
- 設置Jenkins默認郵箱信息
3. 準備郵件內容
在demo項目的根目錄編寫email.html,並提交到Gitlab,html內容如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日誌</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>(本郵件是程序自動下發的,請勿回覆!)</td>
</tr>
<tr>
<td>
<h2><font color="#0000FF">構建結果 - ${BUILD_STATUS}</font></h2>
</td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">構建信息</font></b>
<hr size="2" width="100%" align="center" />
</td>
</tr>
<tr>
<td>
<ul>
<li>項目名稱:${PROJECT_NAME}</li>
<li>構建編號:第${BUILD_NUMBER}次構建</li>
<li>觸發原因:${CAUSE}</li>
<li>構建日誌:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>構建 Url:<a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目錄:<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>項目 Url:<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
</td>
</tr>
<tr>
<td>
<b><font color="#0B610B">Changes Since Last Successful Build:</font></b>
<hr size="2" width="100%" align="center" />
</td>
</tr>
<tr>
<td>
<ul>
<li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br/>%m</pre>",pathFormat=" %p"}
</td>
</tr>
<tr>
<td>
<b>Failed Test Results</b>
<hr size="2" width="100%" align="center" />
</td>
</tr>
<tr>
<td>
<pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica,sans-serif">$FAILED_TESTS</pre>
<br />
</td>
</tr>
<tr>
<td>
<b><font color="#0B610B">構建日誌 (最後 100行):</font></b>
<hr size="2" width="100%" align="center" />
</td>
</tr>
<tr>
<td>
<textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG,maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>
4. 修改流水線代碼
pipeline {
agent any
stages {
stage('拉取代碼') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '8a039ab1-9d39-49a2-888b-03dbe9ee60e1', url: 'http://192.168.1.19:82/test-group/demo.git']]])
}
}
stage('編譯構建') {
steps {
sh label: '', script: 'mvn clean package'
}
}
stage('部署測試') {
steps {
echo '部署測試,這是master分支'
}
}
}
post {
always {
emailext(
subject: '構建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
body: '${FILE,path="email.html"}',
to: '[email protected]'
)
}
}
}