写在前面的话

在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 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. SynchronizationContext笔记

    SynchronizationContext 类是一个基类,可提供不带同步的自由线程上下文. 此类实现的同步模型的目的是使公共语言运行库内部的异步/同步操作能够针对不同的异步模型采取正确的行为.此模型 ...

  2. web appbuilder 正式版用yo esri-appbuilder-js:widget生成widget读取不到config解决方案

           对于在webappBuilder正式版中,如果用yo esri-appbuilder-js:widget生成的widget,在写widget的时候widget里面的config.json ...

  3. 全面解析ECMAScript 6模块系统

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  4. LLVM和GCC的区别(LLVM提供了模块化的编译模块,非常有利于重用,以前的编译器都没有做到这一点)

    最近在Mac OS X Mountain Lion下用Xcode进行开发,发现在编译选项里有如下所示的这两种编译器:一个是Apple LLVM compiler 4.2,另外一个是LLVM GCC 4 ...

  5. Spring Cloud微服务简介

    概述 Spring Cloud给开发者提供一套按照一定套路快速开发分布式工具.它为微服务架构中涉及**配置管理,服务治理,断路器,智能路由,微代理,控制总线,全局锁,分布式会话和集群状态等操作提供了一 ...

  6. Kafka笔记3

    向Kafka写入消息从创建一个ProducerRecord对象开始,ProducerRecord需要包含目标主题和要发送的内容,我们还可以指定键或分区,在发送ProducerRecord对象时,生产者 ...

  7. java集合框架collection(4)HashMap和Hashtable的区别

    HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别.主要的区别有:线程安全性,同步(synchronizatio ...

  8. ZooKeeper学习第三期---Zookeeper命令操作(转)

    转载来源:https://www.cnblogs.com/sunddenly/p/4031881.html 一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他 ...

  9. Spring5源码深度分析(二)之理解@Conditional,@Import注解

    代码地址: 1.源码分析二主要分析的内容 1.使用@Condition多条件注册bean对象2.@Import注解快速注入第三方bean对象3.@EnableXXXX 开启原理4.基于ImportBe ...

  10. Python Re 模块超全解读!

    re模块下的函数 compile(pattern):创建模式对象 import repat=re.compile('A')m=pat.search('CBA')                     ...