jenkins 設置釘釘機器人+jenkins調用shell腳本使用釘釘機器人自定義發消息並通知指定人


兩種釘釘通知方式,一種是使用安裝的釘釘插件來通知,但是這個不好定義通知內容,沒辦法控制發送條件,只要配置了,不管構建參數(分支,渠道,配置),都會發通知,第二種是使用腳本的方式來通知,這個可以自定義通知內容(根據構建參數的變更發送消息)。可用於不同的場景。

首先需要在釘釘群里設置下釘釘機器人:

打開釘釘群設置以后,找到"智能群助手",如下:

 

 點擊"智能群助手"后調到如下頁面添加機器人:

 

 選擇自定義機器人,進入機器人添加設置頁面,機器人名字自定義,接收群組不可填寫,就是當前釘釘群,安全設置,我選擇的是自定義關鍵字,可以添加多個,然后點擊完成以后,會生成一個webhook,記住webhook的token,待會需要這個token來發消息,我的機器人設置如下:

 

 

 

 釘釘群機器人就添加好了,接下來需要設置jenkins了,jenkins需要安裝釘釘插件,可在jenkins的管理-》插件功能中搜索安裝。

 【如果你發現你腳本沒問題,但是就是收不到釘釘消息,記得來這里看看關鍵字是否滿足】

場景1:釘釘群只需要知道構建結果和構建鏈接,其它不關心,可以使用jenkins上釘釘插件的方式來通知,設置如下

(1)添加構建后操作,選擇釘釘通知設置:

 

 (2)輸入剛才的webhook對應的token,並選擇合適發送通知,

 

 設置就那么簡單,但是你的通知消息里必須包含釘釘設置里的"安全設置"中設置的關鍵字,否則消息不會發送成功。

場景2:開發測試群里,大家只想知道構建后包的ftp歸檔路徑,然后取路徑包進行測試,至於構建鏈接和構建失敗與否,並不關心,並且只需要給測試開發群發提測分支的構建即可,其它分支的構建不需要發消息

這個不需要在jenkins上配置釘釘通知,使用jenkins調用shell腳本即可,腳本中可以控制何種參數配置發送,比如,我只想發端sdk是develop分支的時候發消息,腳本send_ding.sh可以這樣寫:

#!bin/sh
if [ "$phrepo" = "send_sdk" -a "$ph_branch" = "develop" ];then
    echo send ding ding message to send sdk group
    now_time=`date "+%Y%m%d%H%M"`
    commit=`git rev-parse --short HEAD`
    ph_branch=`echo $ph_branch_tmp |sed 's/\.//g'` #刪除分支名中的點符號
    now_time="$now_time"_"$ph_branch"_"$commit"_"$phoenix_type"  #設置路徑格式:日期_分支_commitid_類型
    ding_ftp=ftp://192.168.8.1/output/ph_ftp_dir/$now_time/
    #使用curl來發送釘釘消息,消息內容是構建歸檔路徑
    curl 'https://oapi.dingtalk.com/robot/send?access_token=123xxxxxxxxx' \
       -H 'Content-Type: application/json' \
          -d '{"msgtype": "text","text": {"content": "重構sdk出新包啦! '$ding_ftp'"}}'
fi

關鍵的是curl那句,就是來發送釘釘消息的,釘釘群消息結果如下:

 

 機器人圖片可以自己設置,可以看出我的內容中包含了安全設置的“output”。

 另外,如何將消息通知到具體的某個人呢,我們看到釘釘開發文檔中有如下描述:

 

 

 我們看上面圖片,可以知道如何拼接shell腳本的curl通知,如下:

curl 'https://oapi.dingtalk.com/robot/send?access_token=123xxxxxxxxx' \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text","text": {"content": "重構sdk出新包啦! '$ding_ftp' @151xxxx6512 "},"at": {"atMobiles": ["151xxxx6512"],"isAtAll": false}}'
注意:如果@前面是鏈接的話,必須加空格,之后再@151xxxx6512,所以,不管@前是什么,都加一個空格再接后面的@151xxxx6512
結果如下:

 

 

 這樣就可以具體通知到某個人了,如果要通知多個人,直接加號碼就可以了,比如兩個:

@151xxxx4836 @151xxxx3452"},"at": {"atMobiles": ["151xxxx4836","151xxxx3452"],"isAtAll": false}

 

另外,你可以結合定時構建,做到:在指定時間自動構建指定的jenkins配置,構建結束后給指定群發構建歸檔ftp路徑,比如,我設置了發端sdk在下午兩點和晚上九點,自動構建develop分支,構建結束后給發端sdk開發測試群發ftp包路徑,設置如下:

定時器設置:

 

 構建shell設置:

 

 下午2點和晚上九點,根據傳入參數調用上面的腳本,配置任意你想用的內容,發送釘釘消息到釘釘群。

 關於如何在bat腳本中編寫釘釘消息發送,請參考我的另一篇博客:

bat curl 發送json釘釘消息

釘釘和jenkins的配合使用,目前我了解的就這些了,如果你有更多新奇的玩法,歡迎留言。

參考:https://blog.csdn.net/workdsz/article/details/77531802

釘釘開發文檔:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq


免責聲明!

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



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