写在前面的话

在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 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://github.com/daniel-beck/changelog-environment-plugin

这是打包好的插件下载地址:

链接: 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,可以参考我另外一篇博客:

https://www.cnblogs.com/Dy1an/p/9264691.html

4. 此时提交代码测试,最终钉钉消息:

5. 至此通知配置完成!

小结

GitLab 提交触发自动构建是一个很常见的需求,我们可以通过这个配置降低人力成本。

另外如果你公司没有使用钉钉也没有关系,你可以考虑个人钉钉账号,然后拉一个群,但是群有需求,就是必须 3 个人才能创建。

你可以通过先拉人创建完群以后再将人踢掉的方式创建群。

当然,如果你们部门不止你一个人,那就更简单了。我目前 zabbix 告警,Jenkins 上线,以前其他各种需求几乎都是和钉钉机器人结合起来用的。

【06】Jenkins:Gitlab 自动触发构建以及钉钉通知的更多相关文章

  1. GitLab 自动触发 Jenkins 构建

    GitLab 是当前应用非常广泛的 Git Hosting 工具,Jenkins 是非常牛逼的持续集成工具.尽管 GitLab 有内建的 GitLab CI,但它远没有 Jenkins 那么强大好用. ...

  2. Gitlab自动触发Jenkins构建项目

    Gitlab自动触发Jenkins构建项目 一.前提 Gitlab已安装配置好. Jenkins已安装Gitlab plugin. 二.配置jenkins中Job 1.勾选触发器下的gitlab触发器 ...

  3. jenkins GitHub 自动触发

    jenkins GitHub 自动触发 转载请注明出处: 转载自Bin's Blog:  jenkins GitHub 自动触发( http://www.wenbin.cf/post/54/ ) 需要 ...

  4. Gitlab自动触发Jenkins构建打包

    一.目的 在部门的测试环境中,开发人员一旦向gitlab仓库提交成功代码,gitlab就会自动触发jenkins构建项目.当然在构建后还可以添加项目部署或者自动化测试的脚本.这里只针对测试环境. 二. ...

  5. Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布

    思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...

  6. 如何创建一个项目,让gitlab自动触发jenkins进行构建

    前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...

  7. DevOps系列——Jenkins/Gitlab自动打包部署

    前面只说了DevOps的两个基础组件Jenkins和GitLab,客官也不要着急,我们玩就玩的深入一点,Gitlab和Jenkins的各种配置和 插件很多,也够啃一阵子的,不要照着操作一通就感觉万事大 ...

  8. Jenkins + GitLab 通过 Webhook 自动触发构建爬坑记录

    前言   在局域网搭建了一个Jenkins服务,用于自动构建和发布,在调通了构建程序之后,想使用内网的GitLab的Webhook功能触发代码推送事件,然后进行自动构建.后来发现在GitLab上做测试 ...

  9. 创建Jenkins构建触发器,代码提交至gitLab即自动触发构建

    下载所需插件,系统设置-->插件管理,搜索以下两个插件,选择安装 登录gitLab,生成一个Personal Access Tokens 进入Jenkins,添加api token,路径:首页- ...

随机推荐

  1. 微信小程序把玩(二十九)video组件

    原文:微信小程序把玩(二十九)video组件 视频播放组件与图片加载组件也没啥差别,使用起来也没啥注意的 重要属性: wxml <!--监听button点击事件--> <button ...

  2. Android零基础入门第42节:自定义BaseAdapter

    原文:Android零基础入门第42节:自定义BaseAdapter 在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不 ...

  3. ASP.NET Core Linux 发布

    这篇博客参考了以下文章: 1.http://www.cnblogs.com/ants/p/5732337.html 2.http://www.linuxidc.com/Linux/2016-11/13 ...

  4. Model-View-Controller Explained in C++

    The Permanent URL is: Model-View-Controller Explained in C++. The Model-View-Controller (MVC) is not ...

  5. 笨重的mfc还在基于系统控件,熟练的mfc工程师还比不过学习Qt一个月的学生开发效率高(比较精彩,韦易笑)

    作者:韦易笑链接:https://www.zhihu.com/question/29636221/answer/45102191来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新:擦,本来只有 ...

  6. Delphi&C#代码模拟“显示桌面”的功能(使用CreateOleObject('Shell.Application'))

    今天有人问我:“用shell打开文件(显示桌面.scf)的方式还是用模拟键盘(Win+D)显示桌面”这应该有更好的方法,就搜了搜,关键字定位“ToggleDesktop”因为显示桌面.scf的内容是: ...

  7. 比较DirectX和OpenGL的区别(比较详细)

    OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库.OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL.IRIS GL是一个工业标准的3D图形软件接口,功能虽然 ...

  8. Eric Linux - 1 Basic concepts of linux

    Computer basic Computer 5 parts CPU Input Output Memory External storage device. CPU RISC: Reduced I ...

  9. 【POJ - 3414】Pots(bfs)

    Pots 直接上中文 Descriptions: 给你两个容器,分别能装下A升水和B升水,并且可以进行以下操作 FILL(i)        将第i个容器从水龙头里装满(1 ≤ i ≤ 2); DRO ...

  10. 【工具】java发送GET、POST请求

    前项目使用这种HTTP的方式进行数据交互,目前已更换数据交互方式,但是作为接口提供调用来说还是比较简洁高效的: 总体流程就是: 1.发送HTTP请求 2.获取返回的JSON对象 3.JSON转换 pa ...