Jenkins-實現釘釘報警(pipline)


一.前言

最近打算在項目發版的時候,Jenkins實現釘釘告警,本文用的pipeline結合釘釘實現發版告警。

效果圖:

發版成功通知,內容包括版本更新記錄。

 

發版失敗通知

 

 

二.配置步驟

1.釘釘配置

需要在釘釘電腦端操作

建群-配置機器人-取得討論組token

 

 

 

 

 

 

 

 記錄下wehhook地址,后面用得上。

2.Jenkins配置

1.1 安裝jenkins插件

搜索dingding

 

 

1.2 添加機器人

進入系統配置

 

添加機器人

 

 

 記錄機器人ID,后面用得上

3.pipeline配置

#!groovy
pipeline{
agent any
environment{  
    REPOSITORY="https://e.coding.net/jeff2020/helloworld.git"
    PROJECK="zsccv7"
    WEBURL="http://zsccv7.jeff.com"
    WEBDIR="/tmp"
} stages { stage("拉取代碼") { steps { echo "start fetch code from git:${REPOSITORY}" deleteDir() checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanBeforeCheckout']], submoduleCfg: [], userRemoteConfigs: [[url: 'https://e.coding.net/jeff2020/helloworld.git']]]) } } stage('輸出日志') { steps { script{ //調用方法得到日志 並 輸出 def changeString = getChangeString() echo "$changeString" } } } stage("更新代碼") { steps {        此處填寫更新代碼的操作 } } } } post { success { echo "發版成功" dingtalk ( robot: 'b9b37ae7-3132-4d9b-9b07-7021ad0e11be', type: 'LINK', at:[], atAll: false, title: "${PROJECK}上線成功!", text:["更新記錄\n$changeString"], messageUrl: "${WEBURL}", picUrl:'http://kmzsccfile.kmzscc.com/upload/2020/success.jpg', singleTitle:'', btns: [], hideAvatar: false ) } failure { echo "上線失敗" dingtalk ( robot: 'b9b37ae7-3132-4d9b-9b07-7021ad0e11ae', type: 'LINK', at:["12333333333"], atAll: false, title: "${PROJECK}上線失敗!", text:["請管理員及時處理!"], messageUrl: "http://47.112.122.190:52000/", picUrl:'http://kmzsccfile.kmzscc.com/upload/2020/error.jpg', singleTitle:'', btns: [], hideAvatar: false ) } // 省略其他條件塊 } } @NonCPS def getChangeString() { MAX_MSG_LEN = 100 def changeString = "" echo "Gathering SCM changes" def changeLogSets = currentBuild.changeSets for (int i = 0; i < changeLogSets.size(); i++) { def entries = changeLogSets[i].items for (int j = 0; j < entries.length; j++) { def entry = entries[j] truncated_msg = entry.msg.take(MAX_MSG_LEN) changeString += " - ${truncated_msg} [${entry.author}]\n" } } if (!changeString) { changeString = " - No new changes" } return changeString }

此pipeline包含兩個點重要內容

1)獲取項目發版變更記錄

@NonCPS
def getChangeString() {
    MAX_MSG_LEN = 100
    def changeString = ""

    echo "Gathering SCM changes"
    def changeLogSets = currentBuild.changeSets
    for (int i = 0; i < changeLogSets.size(); i++) {
        def entries = changeLogSets[i].items
        for (int j = 0; j < entries.length; j++) {
            def entry = entries[j]
            truncated_msg = entry.msg.take(MAX_MSG_LEN)
            changeString += " - ${truncated_msg} [${entry.author}]\n"
        }
    }
    if (!changeString) {
        changeString = " - No new changes"
    }
    return changeString
} 

 

2)釘釘配置說明

 1 dingtalk (
 2 #機器人ID
 3 robot: 'b9b37ae7-3132-4d9b-9b07-7021ad0e11be', 
 4 #數據類型
 5 type: 'LINK',
 6 #釘釘群里需要@的負責人
 7 at:["18217472422"],
 8 atAll: false,
 9 #標題
10 title: "${PROJECK}上線成功!",
11 #報警內容
12 text:["更新記錄\n$changeString"],
13 messageUrl: "${WEBURL}",
14 #圖片鏈接地址
15 picUrl:'http://kmzsccfile.kmzscc.com/upload/2020/success.jpg',
16 singleTitle:'',
17 btns: [],
18 hideAvatar: false
19 )

詳細說明請參考插件文檔

https://jenkinsci.github.io/dingtalk-plugin/guide/pipeline.html

 


免責聲明!

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



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