实践环境

  • GitLab Community Edition 12.6.4
  • Jenkins 2.284
  • Post build task 1.9(Jenkins插件)
  • Generihttp 302c Webhook Trigger Plugin 1.72(Jenkins插件)
  • Gigitlab装置教程具体tLab 1.5.13(Jenkins插件

结束进程

钉钉机器人装备

  1. 选择要推送的钉钉群
  2. 点击群设置按钮
  3. 点击智能群辅佐
  4. 点击增加机器人
  5. 点击添httpclient加机器人+号按钮
  6. 点击自界说
  7. 填写机器人姓名,用于匹配推送音讯央求体内容的的要害词

截图如下:

详解Jenkins 完成Gitlab事情主动触发Jenkins构建及钉钉音讯推送

拷贝出Webhook地址,供下文钉钉音讯推送Shell脚本中运用,结束

详解Jenkins 完成Gitlab事情主动触发Jenkins构建及钉钉音讯推送

设备Jenkins插件新建并装备Jenkins项目Build Triggers装备如下,勾选Generic Webhook Tjson转maprigger

详解Jenkins 完成Gitlab事情主动触发Jenkins构建及钉钉音讯推送

Post contshelly-lanent parametehttp://192.168.1.1登录rs(由于Gitlab触发的央求为post央求,需求依据央求体内容来判别是否实施Jenkins构建)要害装备项说shellfish明:

Variable 自界说变量称谓

Expression 用于提取变量值的表达式(支撑JSONPath、XPath),提取的值赋值给上述自界说变量(例中为event_name)。

Option Filter要害装备项说明:

Expression 用于匹配下述Text的正则表达式,假定匹配则实施构建央求,不然不实施。这儿装备为^push$,是json格局由于Gitlab merge吞并代码操作触发的央求,http协议其央求体为json格shelly局数据,其间包含名为event_name的键,其值为 push

Text 用于匹配上述正则表达式的文本,例中设httpwatch置为自界说变量$event_name。

以上装备大意为,假定收到构建央求,运用JSONPath表达式从gitlab和github差异JSON格局的央求体获取键为event_name的值,存储到名为event_name变量,然后取该变量值同正则表达式^push$匹配,假定匹配,则触发Jenkins构建当前项目,不然不构建。

Token:自界说token值,用于央求
http://JENKINS_URL/generic-webhook-trigger/invoke触发构建运用,如下,gitee可以用于查询参数、json解析央求头参数

/invoke?token=TOKENgithub永久回家地址_HEREgiti轮胎token: TOKEN_HEREAuthorizahttp 302tion: Bearer TOKEN_HERE
generic-webhook-triggshell是什么意思中文er装备参阅连接

pljson文件是干什么的ugins.jenkins.io/generic-web…
Post-build Actions装备

点击Add post-build action按钮,弹出界面中选择Post build task可新增以下装备界面。如下,可在Script输入框中编写构建结束后需求实施的Shell指令gitlab中文官网(该插件会先依据填写的sgitlab中文官网hell指令生成一个临时sh脚本,然后实施该脚本),例中为钉钉推送指令,具体代码拜见下文

详解Jenkins 完成Gitlab事情主动触发Jenkins构建及钉钉音讯推送
如上图,假定只希望构建成功才实施Script,可以勾选Run script only if all previous stgit指令eps were successful
钉钉音讯推送Shell

#!/bin/bashHTTP
###shellfish##############################################################
# 作者:shouke
# 日期:2021-03-07
# 作用:机器人告知
####################################################GitLab#############
# 钉钉音讯变量界说
#################################################################
# 当前时刻
TIME_NOW=`date "+%Y年%m月%dhttp://www.baidu.com日 %H:%M:%S"`
BUILD_STATUS="失利"
LAST_BUILD_BUILD_XML=`curl http://ops.dev.xxxx.cogitlab官网m/view/testarch/job/$JOB_NAME/lastBuild/api/xml --usergitlab建立 jusGiter_name:1234shell脚本56`
BUILD_RESULT=$(echo $LAST_BUILD_BUILD_XML | grep "<result>shell是什么意思中文SUCCESS</result>")
if [ "${BUILD_RESULT}" ];then
BUILD_STATUS="成功"
else
BUILD_RESULT=$(echjson格局怎样打开o $LAST_BUILD_BUILD_XML | grep "<giteeresult>FAILURE</result>")
igitlab使用教程f [ "${BUILD_RESULT}" ];then
BUILD_STATUS="失利"
else
BUILshell脚本根本指令D_STATUS="无法获取"
fi
fi
# 机器人 webhook 地址gitlab建立(上文增加钉钉机器人结束时拷贝的webhook地址)
DINGTALK_WEBHOOK_URL='https://oapi.dinhttp://192.168.1.1登录gtalkshell脚本根本指令.json转mapcom/robot/send?accessshell脚本根本指令_token=903fcd6cgitlab使用教程56f301json解析d0a57bee243792a11bbHTTP1e42cae89af5a9071bdba890c0a3d2'
#httpwatch 音讯标题 # 实践不起作用,可是不能少,不然发送失利
DINGTALK_TITLjson解析E="XX途径有新的构建,请及时查阅"
# 音讯正文
# Jenkins Job构建日志地址
JENshell指令KINS_JOB_BUILD_LOG_URL="http://ops.dev.xxxx.com/view/testarch/job/${JOB_jsonNAME}/${BUILD_NUMBER}/consolgitlab建立e"
DINGTALK_TEXT="## xshell脚本根本指令x途径有新的构建,请及时查阅nn>
**【告知时刻】**:${TIME_NOW}nn>
**【构建ID】**https和http的差异:${BUILD_DISPLAY_NAME}nn&ggit指令t;
**【构建项目】**:${JOB_NAME}nn>
**【构建情况】**:${BUILD_SGitTATUS}nn>
**[点击检shell脚本根本指令查更多](${json格局JENKINshell是什么意思中文S_JOB_BUILD_LOGitLabG_URL}shelly)**n
"
#
# 发送钉钉音讯告知函数
####################################################HTTP#############
functiongitlab SEND_MESSAGE_TO_DINGTALKshellfish() {
/usgit指令r/bin/curl "$1http 500" -H 'Content-Type: application/json' -d "
{
"markdown": {
"title": "$2",
"text": "$3"
},
"at": {
"atMobiles": [],
"isAtAlgitlab装置教程具体l": false
},
"mshttps和http的差异gtype": "markdown"
}gitlab使用教程
"
}
# 发送钉http://192.168.1.1登录钉音讯
################################https和http的差异#################################
SEND_MESShttp 500AGE_TO_DINGTALK "${DINGTALK_WEBHOOK_URL}" "${DINGTALK_TITLE}" "${DINGTALK_TEXT}"

说明:
curl ops.dev.xxxx.com/view/testar… –user juser_name:1234gitlab拉取代码到本地56

一名为juser_name的gitlab装置教程具体用户,运用暗码12http://www.baidu.com345Shell6访问指定项目的最终一次构建相关的信息,回来xml文档

shelly心:钉钉谈天窗口中要结束音讯换行有必要运用两个n

Gitlab主动触发装备
Settings -> Integration,打开如下页面,

  • 填写URL(opsgitlab官网.dev.xxxx.com/generic-web…
  • 勾选Pusshellfishh eventshttpclientjson解析发器(这儿以push、吞并代码操作为例子,所以仅勾选该事情)
  • 勾选 Enable SSL verificjson解析ahttpwatchtshell脚本编程100例ion 复选框(假定没有勾选的话,默许便是勾选的)

最终点击 Add webhook按shell编程

详解Jenkins 完成Gitlab事情主动触发Jenkins构建及钉钉音讯推送
增加的http署理装备,会主动闪现在下方,可以对其进行事情触发测验

详解Jenkins 完成Gitlab事情主动触发Jenkins构建及钉钉音讯推送
触发的记录会gitlab建立主动在装备修正页面httpclient下方闪现,点击 View dshellyetails按钮shellfish,可以检查央求明细:

详解Jenkins 完成Gitlab事情主动触发Jenkins构建及钉钉音讯推送
留心:主动触发时Jenkins项目构建时,假定Jenkins运用了参shell脚本数化构建插件Build With Parameters Plugin,而且运用插件结束的参数有设置默许值,则主动触发时也会主动运用对应参数的默许值进行构建。
钉钉消gitlab中文官网息推送作用图:

详解Jenkins 完成Gitlab事情主动触发Jenkins构建及钉钉音讯推送