最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送

 更新時(shí)間:2021年04月14日 17:35:15   作者:授客  
這篇文章主要介紹了Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送,應(yīng)該會(huì)對(duì)大家學(xué)習(xí)Jenkins有所啟發(fā)

實(shí)踐環(huán)境

GitLab Community Edition 12.6.4

Jenkins 2.284

Post build task 1.9(Jenkins插件)

Generic Webhook Trigger Plugin 1.72(Jenkins插件)

GitLab 1.5.13(Jenkins插件)

實(shí)現(xiàn)步驟

釘釘機(jī)器人配置

選擇要推送的釘釘群 -> 點(diǎn)擊群設(shè)置按鈕 -> 點(diǎn)擊智能群助手 -> 點(diǎn)擊添加機(jī)器人 -> 點(diǎn)擊添加機(jī)器人+號(hào)按鈕 -> 點(diǎn)擊自定義->填寫機(jī)器人名字,用于匹配推送消息請(qǐng)求體內(nèi)容的的關(guān)鍵詞

然后,復(fù)制出Webhook地址,供下文釘釘消息推送Shell腳本中使用,完成

安裝Jenkins插件新建并配置Jenkins項(xiàng)目Build Triggers配置

如下,勾選Generic Webhook Trigger

Post content parameters(因?yàn)?code>Gitlab觸發(fā)的請(qǐng)求為post請(qǐng)求,需要基于請(qǐng)求體內(nèi)容來判斷是否執(zhí)行Jenkins構(gòu)建)關(guān)鍵配置項(xiàng)說明:

Variable 自定義變量名稱

Expression 用于提取變量值的表達(dá)式(支持JSONPath、XPath),提取的值賦值給上述自定義變量(例中為event_name)。

Option Filter關(guān)鍵配置項(xiàng)說明:

Expression 用于匹配下述Text的正則表達(dá)式,如果匹配則執(zhí)行構(gòu)建請(qǐng)求,否則不執(zhí)行。這里配置為^push$,是因?yàn)?code>Gitlab merge合并代碼操作觸發(fā)的請(qǐng)求,其請(qǐng)求體為json格式數(shù)據(jù),其中包含名為event_name的鍵,其值為 push

Text 用于匹配上述正則表達(dá)式的文本,例中設(shè)置為自定義變量$event_name。

以上配置大意為,如果收到構(gòu)建請(qǐng)求,使用JSONPath表達(dá)式從JSON格式的請(qǐng)求體獲取鍵為event_name的值,存儲(chǔ)到名為event_name變量,然后取該變量值同正則表達(dá)式^push$匹配,如果匹配,則觸發(fā)Jenkins構(gòu)建當(dāng)前項(xiàng)目,否則不構(gòu)建。

Token:自定義token值,用于請(qǐng)求http://JENKINS_URL/generic-webhook-trigger/invoke觸發(fā)構(gòu)建使用,如下,可以用于查詢參數(shù)、請(qǐng)求頭參數(shù)

/invoke?token=TOKEN_HEREtoken: TOKEN_HEREAuthorization: Bearer TOKEN_HERE

generic-webhook-trigger配置參考連接

https://plugins.jenkins.io/generic-webhook-trigger/

Post-build Actions配置

點(diǎn)擊Add post-build action按鈕,彈出界面中選擇Post build task可新增以下配置界面。如下,可在Script輸入框中編寫構(gòu)建完成后需要執(zhí)行的Shell命令(該插件會(huì)先根據(jù)填寫的shell命令生成一個(gè)臨時(shí)sh腳本,然后執(zhí)行該腳本),例中為釘釘推送命令,具體代碼參見下文

如上圖,如果只希望構(gòu)建成功才執(zhí)行Script,可以勾選Run script only if all previous steps were successful

釘釘消息推送Shell

#!/bin/bash
#################################################################
# 作者:shouke
# 日期:2021-03-07
# 作用:機(jī)器人通知
#################################################################
# 釘釘消息變量定義
#################################################################
# 當(dāng)前時(shí)間
TIME_NOW=`date "+%Y年%m月%d日 %H:%M:%S"`
BUILD_STATUS="失敗"
LAST_BUILD_BUILD_XML=`curl http://ops.dev.xxxx.com/view/testarch/job/$JOB_NAME/lastBuild/api/xml --user juser_name:123456`
BUILD_RESULT=$(echo $LAST_BUILD_BUILD_XML | grep "<result>SUCCESS</result>") 
if [ "${BUILD_RESULT}" ];then 
    BUILD_STATUS="成功"
else
    BUILD_RESULT=$(echo $LAST_BUILD_BUILD_XML | grep "<result>FAILURE</result>") 
    if [ "${BUILD_RESULT}" ];then 
        BUILD_STATUS="失敗"
    else
        BUILD_STATUS="無法獲取"     
    fi
fi   
# 機(jī)器人 webhook 地址(上文添加釘釘機(jī)器人結(jié)束時(shí)復(fù)制的webhook地址)
DINGTALK_WEBHOOK_URL='https://oapi.dingtalk.com/robot/send?access_token=903fcd6c56f301d0a57bee243792a11bb1e42cae89af5a9071bdba890c0a3d2'
# 消息標(biāo)題 # 實(shí)際不起作用,但是不能少,否則發(fā)送失敗
DINGTALK_TITLE="XX平臺(tái)有新的構(gòu)建,請(qǐng)及時(shí)查閱"
# 消息正文
# Jenkins Job構(gòu)建日志地址
JENKINS_JOB_BUILD_LOG_URL="http://ops.dev.xxxx.com/view/testarch/job/${JOB_NAME}/${BUILD_NUMBER}/console"
DINGTALK_TEXT="## xx平臺(tái)有新的構(gòu)建,請(qǐng)及時(shí)查閱\n\n>\
**【通知時(shí)間】**:${TIME_NOW}\n\n>\
**【構(gòu)建ID】**:${BUILD_DISPLAY_NAME}\n\n>\
**【構(gòu)建項(xiàng)目】**:${JOB_NAME}\n\n>\
**【構(gòu)建狀態(tài)】**:${BUILD_STATUS}\n\n>\
**[點(diǎn)擊查看更多](${JENKINS_JOB_BUILD_LOG_URL})**\n
" 
#  
# 發(fā)送釘釘消息通知函數(shù)
#################################################################
function SEND_MESSAGE_TO_DINGTALK() {
    /usr/bin/curl "$1" -H 'Content-Type: application/json' -d "
    {
        \"markdown\": {
            \"title\": \"$2\", 
            \"text\": \"$3\"
        }, 
        \"at\": {
          \"atMobiles\": [],
          \"isAtAll\": false
        },
        \"msgtype\": \"markdown\"
    }
    " 
}
# 發(fā)送釘釘消息
#################################################################
SEND_MESSAGE_TO_DINGTALK "${DINGTALK_WEBHOOK_URL}" "${DINGTALK_TITLE}" "${DINGTALK_TEXT}"

說明:

curl http://ops.dev.xxxx.com/view/testarch/job/$JOB_NAME/lastBuild/api/xml --user juser_name:123456`

以名為juser_name的用戶,使用密碼123456訪問指定項(xiàng)目的最后一次構(gòu)建相關(guān)的信息,返回xml文檔

注意:釘釘聊天窗口中要實(shí)現(xiàn)消息換行必須使用兩個(gè)\n

Gitlab自動(dòng)觸發(fā)配置

Settings -> Integration,打開如下頁面,

  1. 填寫URL(http://ops.dev.xxxx.com/generic-webhook-trigger/invoke?token=0771826b93bbd566266bce34f5123ebb),這里的token值即為generic-webhook-trigger插件中配置在定義token
  2. 勾選Push events觸發(fā)器(這里以push、合并代碼操作為例子,所以僅勾選該事件)
  3. 勾選 Enable SSL verification 復(fù)選框(如果沒有勾選的話,默認(rèn)就是勾選的)

最后點(diǎn)擊 Add webhook按鈕

添加的配置,會(huì)自動(dòng)顯示在下方,可以對(duì)其進(jìn)行事件觸發(fā)測(cè)試

觸發(fā)的記錄會(huì)自動(dòng)在配置編輯頁面下方顯示,點(diǎn)擊 View details按鈕,可以查看請(qǐng)求明細(xì)

注意:自動(dòng)觸發(fā)時(shí)Jenkins項(xiàng)目構(gòu)建時(shí),如果Jenkins使用了參數(shù)化構(gòu)建插件Build With Parameters Plugin,并且使用插件實(shí)現(xiàn)的參數(shù)有設(shè)置默認(rèn)值,則自動(dòng)觸發(fā)時(shí)也會(huì)自動(dòng)使用對(duì)應(yīng)參數(shù)的默認(rèn)值進(jìn)行構(gòu)建。

釘釘消息推送效果圖

到此這篇關(guān)于使用Jenkins完成釘釘消息推送及Gitlab事件自動(dòng)觸發(fā)的Jenkins構(gòu)建的文章就介紹到這了,更多相關(guān)Jenkins內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

阿坝县| 阿巴嘎旗| 义马市| 石阡县| 天镇县| 都安| 石狮市| 积石山| 武平县| 司法| 石河子市| 仙游县| 陇南市| 南平市| 通河县| 察雅县| 咸宁市| 滦平县| 营山县| 新巴尔虎右旗| 南京市| 涪陵区| 延吉市| 个旧市| 唐山市| 舒兰市| 宜昌市| 卓资县| 阿克陶县| 东阳市| 布拖县| 江山市| 金塔县| 利津县| 潮安县| 富顺县| 青河县| 兰州市| 宜宾县| 惠州市| 湘阴县|