1. 程式人生 > 其它 >1小時學會jenkins整合郵件/微信/釘釘通知

1小時學會jenkins整合郵件/微信/釘釘通知

01 郵件通知

  • 郵件擴充套件外掛安裝Email Extension Plugin,如果已經安裝了則不需要再裝該外掛可以提供更詳細的郵件傳送設定
  • QQ郵箱準備公司裡會用企業郵箱作為發件人,相關資訊找郵箱管理員諮詢。本例中採用qq郵箱作為郵件管理員及發件人
    1、開啟 QQ 郵箱 SMTP 服務,開啟 QQ 郵箱進入設定
    2、進入帳戶
    3、開啟SMTP服務
    4、傳送驗證碼到指定號碼
    5、獲取授權碼,儲存此授權碼到 txt 檔案中,Jenkins 中配置郵箱需要用到此授權碼
    6、點選確定,SMTP服務已開啟
  • jenkins自帶郵件配置在這裡可以先測試一下我們的郵箱配置是否正確,郵件能否傳送成功進入系統管理-->系統配置,做如下配置先增加系統管理員郵件地址找郵件通知的區域,進行配置及測試

    點選測試後提示成功,並且郵箱會收到一封郵件,說明郵件傳送沒有什麼問題
  • 配置擴充套件郵箱該配置將會作為我們jenkins任務執行完成後的郵件模板進入系統管理-->系統配置,找到Extended E-mail Notification區域,做如下配置:
    如果想看任務傳送郵件時的詳細日誌可以勾選下述選項,主要是郵件傳送有問題時進行除錯使用的

02 釘釘通知

  • 安裝釘釘通知外掛
  • 登入釘釘,配置釘釘機器人參考連結:https://developers.dingtalk.com/document/robots/custom-robot-access
  • jenkins裡配置釘釘進入系統管理-->系統配置,找到釘釘區域,做如下配置
  • jenkins 任務配置釘釘機器人只支援自由風格的任務,不支援maven風格的,所以我們先建立一個自由風格的試一試
    1、建立自由風格的專案
    2、儲存後立即構建可以看到釘釘群就收到了任務執行的訊息

03 微信通知

  • 先檢查jdk配置如果jdk是openjdk的版本,那麼一定要解除安裝,用oracle的jdk,否則可能會出錯
  • 安裝微信通知外掛
  • 登入企業微信,新增微信機器人1、群訊息右鍵,點選新增機器人
    2、點選新增一個機器人後,點選新建立一個機器人

    3、輸入機器人名稱,點選新增
  • jenkins 任務配置微信通知進入任務配置介面,拉到最下面,新增企業微信通知
    做如下設定:
  • 執行任務,企業微信群收到通知

04 郵件內容模板

郵件模板

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>$PROJECT_NAME-第$BUILD_NUMBER次構建日誌</title>
</head> 

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"  offset="0">     
     <div>   
     <table width="95%" cellpadding="0" cellspacing="0"    style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
     <tr>           
        <th align="center" colspan="2"><br />
            <h2>構建資訊</h2>            
        </th>       
     </tr>       
       <tr>             
         <td>                 
            <ul>                     
               <li>專案名稱 :$PROJECT_NAME</li><br />              
               <li>程式碼覆蓋率報告:<a href=${BUILD_URL}jacoco target='_blank'>${BUILD_URL}jacoco</a></li><br />  
               <li>sonar掃描報告:<a href=http://192.168.0.107:9000/dashboard?id=jacocoaa1${BUILD_NUMBER} target='_blank'>http://192.168.0.107:9000/dashboard?id=jacocoaa1${BUILD_NUMBER}</a></li><br />                 
               <li>詳細測試日誌 :<a href=${BUILD_URL}console target='_blank'>${BUILD_URL}console</a></li><br />  
               <li>觸發原因:${CAUSE}</li><br />        
               <li>專案Url :<a href=‘$BUILD_URL’ target='_blank'>$BUILD_URL</a></li><br />          
           </ul>             
        </td>           
        <td height="350px" style="overflow:hidden;display:block">${JELLY_SCRIPT,template="html"}<br/>
       </tr>     
     </table>    
   </div> 
 </body> 
</html>

如何知道jenkins都有哪些內建變數?(記得把ip換成你自己的)

  • 地址:http://192.168.0.108:8080/env-vars.html/

05 釘釘和微信通知拓展

釘釘只能用在自由風格的專案,而微信通知又不能自定義訊息內容,都不是很完美

那麼我們可以自定義指令碼的方式來擴充套件這部分,在任務構建後去執行某段指令碼來達到我們的目的,構建後執行指令碼需要如下外掛

  • 熟悉釘釘機器人訊息介面https://developers.dingtalk.com/document/robots/custom-robot-access可以採用介面測試工具先除錯介面,除錯通了以後再編寫指令碼
  • 編輯post build裡的指令碼如下:
#訪問當前任務的結果api,並將結果儲存在result.json檔案中curl -u admin:123456 ${BUILD_URL}api/json>result.json#使用awk對result.json做解析,得到任務執行結果result=$(awk -F '"result":' '{print $2}' result.json|awk -F '[",]' '{print $1$2}')echo ${result}#使用awk對result.json做解析,得到任務執行人user=$(awk -F '"userName":' '{print $2}' result.json|awk -F '[",]' '{print $1$2}')echo ${user}#使用curl呼叫釘釘的webhook地址,並將和任務有關的變數拼接在引數text引數中curl 'https://oapi.dingtalk.com/robot/send?access_token=b23d3a9cf410a4f7b4b05b1e5fe73ead7f589aa92572bd367cbb919d46904c6b' \   -H 'Content-Type: application/json' \   -d '{        "msgtype": "markdown",        "markdown": {            "title":"dingding",            "text": "#### '${JOB_NAME}'專案掃描任務  \n - 任務:第'${BUILD_NUMBER}'次\n - 狀態:'${result}' \n - 執行人: '${user}' \n \n[檢視控制檯]('${BUILD_URL}')"       },       "at": {           "atMobiles": [           ],           "atUserIds": [           ],           "isAtAll": false      } }'

最終收到的訊息:

  • 熟悉微信機器人的訊息介面在企業微信機器人配置介面可以看到介面相關資訊
    可以採用介面測試工具先除錯介面,除錯通了以後再編寫指令碼
  • 編輯post build裡的指令碼如下:
#訪問當前任務的結果api,並將結果儲存在result.json檔案中curl -u admin:123456 ${BUILD_URL}api/json>result.json#使用awk對result.json做解析,得到任務執行結果result=$(awk -F '"result":' '{print $2}' result.json|awk -F '[",]' '{print $1$2}')echo ${result}#使用awk對result.json做解析,得到任務執行人user=$(awk -F '"userName":' '{print $2}' result.json|awk -F '[",]' '{print $1$2}')echo ${user}#使用curl呼叫微信的webhook地址,並將和任務有關的變數拼接在引數content引數中curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a2a30ae8-4c5f-4302-9820-dc8b92d2f510' \   -H 'Content-Type: application/json' \   -d '{         "msgtype": "markdown",         "markdown": {             "content": "#### '${JOB_NAME}'專案掃描任務1  \n - 任務:第'${BUILD_NUMBER}'次\n - 狀態:'${result}' \n - 執行人: '${user}' \n <@沙陌> \n \n[檢視控制檯]('${BUILD_URL}') "      }}'

最終收到的訊息: