【06】Jenkins:Gitlab 自动触发构建以及钉钉通知
写在前面的话
在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 gitlab 上的时候,希望它能够自动触发构建,发布到我们需要的环境。
目前我们内部有做类似的需求:产品提交原型到 gitlab,然后 gitlab 分支变动触发 Jenkins 构建,将最新的产品原型发布到 nginx 配置的网页访问目录。更新完成以后通过钉钉机器人提供的 webhook 在公司群里通知大家,并打印出本次提交者是谁,提交的内容是啥。
配置 Gitlab 触发 Jenkins 自动构建
需要的插件有:GitLab 和 Gitlab Hook
1. 我们在插件中心可以搜索到:

直接安装重启!
特别说明:
网上有很多教程,到这一步以后一般都是去 Gitlab 的用户设置里面配置 Access Token,然后再将 Token 配置到 Jenkins 的系统配置中 GitLab 项里面,其实根本就不需要。
我们后面 Jenkins 连接 GitLab 认证通信是通过 Jenkins 本身配置 GitLab 账户来拉取代码。
GitLab 触发 Jenkins 构建则是通过 Jenkins 提供给 GitLab 的 Token。
至始至终那个配置都没用到,所以网上大多教程其实都是你抄我我抄你走冤枉路。
2. 创建一个测试新任务:

配置任务 GIT 地址:

配置自动构建:

添加构建操作:

保存配置!
3. Gitlab 配置项目连接 Jenkins:

4. 提交 Gitlab 项目的 Master 分支测试自动构建:

此时会过来查看 Jenkins:

可以看到触发构建成功,而且可以看到是谁提交了代码触发的构建!
5. 至此,Gitlab 分支提交代码自动触发构建的配置完成,我们甚至可以在 GitLab 上面查看触发记录:
在我们之前编辑 Token 的地方,点击编辑我们的 Token:

在编辑的最下方可以看到执行记录:

钉钉脚本扩展
如我一开始说到的,有些时候我们需要达到通知的目的,因为近来的公司都用钉钉,所以专门做了一个钉钉机器人的脚本用来将我们构建的信息发送到群里,达到通知的目的。
Jenkins 目前本身已经具有了钉钉的插件,但是个人觉得不是很好用,所以就自己写了脚本,用于测试。
为了更好的结合 GitLab 使用,我们需要用到一个第三方插件,这是项目的开源地址:
这是打包好的插件下载地址:
链接: https://pan.baidu.com/s/1yqxEoJAxFbTGWHrO5lHu3Q 提取码: rjcj
该插件能帮助我们获取到一些 GitLab 用户提交信息!
1. 下载后 Jenkins 本地安装该插件:

上传安装该插件,不需要重启 Jenkins!
2. 构建的前面多个 构建环境 这一项,下图是我们配置的内容:

内容:
%1$s\n\n更新内容:%3$s
3. 修改构建,加入我们的脚本:

脚本内容如下:
#!/bin/bash #################################################################
# 作者:Dylan <1214966109@qq.com>
# 日期:2019-07-18
# 作用:机器人通知
################################################################# #################################################################
# 钉钉消息通知
#################################################################
function SEND_MESSAGE_TO_DINGDING() {
/usr/bin/curl "$1" -H 'Content-Type: application/json' -d "
{
\"actionCard\": {
\"title\": \"$2\",
\"text\": \"$3\",
\"hideAvatar\": \"0\",
\"btnOrientation\": \"0\",
\"btns\": [
{
\"title\": \"$2\",
\"actionURL\": \"$4\"
}
]
},
\"msgtype\": \"actionCard\"
}"
} #################################################################
# 钉钉消息变量
#################################################################
# 当前时间
TIME_NOW=$(date +%Y年%m月%d日-%H:%M:%S)
# 机器人 webhook 地址
DINGDING_TOKEN_URL='https://oapi.dingtalk.com/robot/xxxxxx'
# 消息标题
DINGDING_TITLE="Oops,GitLab项目更新啦~"
# 消息正文
DINGDING_CONTENT="更新用户:${SCM_CHANGELOG}\n\n更新时间:${TIME_NOW}"
# Jenkins 地址
JENKINS_URL='http://192.168.10.202:8080/jenkins'
# Jenkins 构建日志地址
JENKINS_JOB_URL="${JENKINS_URL}/job/${JOB_NAME}/${BUILD_NUMBER}/console" #################################################################
# 发送钉钉消息
#################################################################
SEND_MESSAGE_TO_DINGDING ${DINGDING_TOKEN_URL} ${DINGDING_TITLE} ${DINGDING_CONTENT} ${JENKINS_JOB_URL}
注意上图红色部分需要替换成为自己的配置!
如果不知道怎么配置钉钉机器人的 webhook,可以参考我另外一篇博客:
4. 此时提交代码测试,最终钉钉消息:

5. 至此通知配置完成!
小结
GitLab 提交触发自动构建是一个很常见的需求,我们可以通过这个配置降低人力成本。
另外如果你公司没有使用钉钉也没有关系,你可以考虑个人钉钉账号,然后拉一个群,但是群有需求,就是必须 3 个人才能创建。
你可以通过先拉人创建完群以后再将人踢掉的方式创建群。
当然,如果你们部门不止你一个人,那就更简单了。我目前 zabbix 告警,Jenkins 上线,以前其他各种需求几乎都是和钉钉机器人结合起来用的。
【06】Jenkins:Gitlab 自动触发构建以及钉钉通知的更多相关文章
- GitLab 自动触发 Jenkins 构建
GitLab 是当前应用非常广泛的 Git Hosting 工具,Jenkins 是非常牛逼的持续集成工具.尽管 GitLab 有内建的 GitLab CI,但它远没有 Jenkins 那么强大好用. ...
- Gitlab自动触发Jenkins构建项目
Gitlab自动触发Jenkins构建项目 一.前提 Gitlab已安装配置好. Jenkins已安装Gitlab plugin. 二.配置jenkins中Job 1.勾选触发器下的gitlab触发器 ...
- jenkins GitHub 自动触发
jenkins GitHub 自动触发 转载请注明出处: 转载自Bin's Blog: jenkins GitHub 自动触发( http://www.wenbin.cf/post/54/ ) 需要 ...
- Gitlab自动触发Jenkins构建打包
一.目的 在部门的测试环境中,开发人员一旦向gitlab仓库提交成功代码,gitlab就会自动触发jenkins构建项目.当然在构建后还可以添加项目部署或者自动化测试的脚本.这里只针对测试环境. 二. ...
- Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布
思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...
- 如何创建一个项目,让gitlab自动触发jenkins进行构建
前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...
- DevOps系列——Jenkins/Gitlab自动打包部署
前面只说了DevOps的两个基础组件Jenkins和GitLab,客官也不要着急,我们玩就玩的深入一点,Gitlab和Jenkins的各种配置和 插件很多,也够啃一阵子的,不要照着操作一通就感觉万事大 ...
- Jenkins + GitLab 通过 Webhook 自动触发构建爬坑记录
前言 在局域网搭建了一个Jenkins服务,用于自动构建和发布,在调通了构建程序之后,想使用内网的GitLab的Webhook功能触发代码推送事件,然后进行自动构建.后来发现在GitLab上做测试 ...
- 创建Jenkins构建触发器,代码提交至gitLab即自动触发构建
下载所需插件,系统设置-->插件管理,搜索以下两个插件,选择安装 登录gitLab,生成一个Personal Access Tokens 进入Jenkins,添加api token,路径:首页- ...
随机推荐
- Android零基础入门第74节:Activity启动和关闭
上一期我们学习了Activity的创建和配置,当时留了一个悬念,如何才能在默认启动的Activity中打开其他新建的Activity呢?那么本期一起来学习如何启动和关闭Activity. 一.概述 经 ...
- 教你如何快速使用Github
以前看过几篇github的使用教程,感觉还是不是很清晰,自从看到了这篇,通俗易懂,也学会基本的使用了,在此为大家推荐.(转自知乎,为了能让更多的人看到,请允许我使用 “原创”,如果侵权请联系.) Gi ...
- VS2010使用c++、gSOAP创建WebService 图文教程
VS2010使用c++.gSOAP创建的WebService 图文教程 环境 操作系统:Windows 7gsoap版本:2.8.32C++编译器/开发环境:Visual Studio 2010 gS ...
- uva10883_Supermean_数学
题目大意:给出n个数,每相邻两个数求平均数,得到n-1个数,再求平均数,得到n-2个数,......一直到最后一个数,输出这个数. 题目很简单,就是中间数据会比较大有点复杂,超过double的范围,而 ...
- Java 诞生的趣事
Java 命名的由来 Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名.Java语言中的许多库类名称,多与咖啡有关:如JavaBeans(咖啡豆).NetBeans(网络豆)以及Object ...
- TCP使用注意事项总结
目录 发送或者接受数据过程中对端可能发生的情况汇总 本端TCP发送数据时对端进程已经崩溃 本端TCP发送数据时对端主机已经崩溃 本端TCP发送数据时对端主机已经关机 某个连接长时间没有数据流动 TCP ...
- IOS 数据存储(NSKeyedArchiver 归档篇)
什么是归档 当遇到有结构有组织的数据时,比如字典,数组,自定义的对象等在存储时需要转换为字节流NSData类型数据,再通过写入文件来进行存储. 归档的作用 之前将数据存储到本地,只能是字符串.数组.字 ...
- Android短视频中如何实现720P磨皮美颜录制?
视频中磨皮.美颜功能已成为刚需,那么如何在Android短视频中实现720P磨皮美颜录制?本篇文章中,网易云信资深开发工程师将向大家介绍具体的操作方法. 相关阅读推荐 <短视频技术详解:Andr ...
- 编译gd库出错
不知道大家有没有遇到在 X64 RedHat5 或者 RedHat4 下.编译安装PHP环境的时候. 安装了libxml,zlib,jpeg,libpng,freetype,libart_lgpl, ...
- Android之LinearLayout布局下怎么让按钮固定在底部
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...