写在前面的话

在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 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. Win10《芒果TV - Preview》官方指定预览版 - 重要使用注意事项

    Win10<芒果TV - Preview>官方指定预览版,最新的改进和功能更新将会此版本优先体验. 重要使用注意事项: 1.因为方便过审核,默认将会员相关的操作提示简化: 2.使用中务必手 ...

  2. 微信小程序把玩(十四)button组件

    原文:微信小程序把玩(十四)button组件 button按钮用的算是最普遍的组件之一. 主要属性: wxml <!--按钮默认样式,点击事件--> <button type=&qu ...

  3. 使用Newtonsoft.Json输出JSON

    安装: Install-Package Newtonsoft.Json 代码: //序列化DataTable DataTable dt = new DataTable(); dt.Columns.Ad ...

  4. WPF使用Font-Awesome字体

    官方网站:https://fontawesome.com/ 使用教程: 学习WPF——使用Font-Awesome图标字体 - liulun - 博客园https://www.cnblogs.com/ ...

  5. ORA-23421: job number 225 is not a job in the job queue

    在对数据库进行异机恢复之后,为了防止上面作业自动执行,扰乱正常业务系统,需要将测试库上的作业和db_link进行删除:但是使用sys用户连接进去,删除的时候报如下错误SQL> exec DBMS ...

  6. 中国自主X86处理器工艺跃进:国产28nm升级16nm(上海兆芯)

    提到X86处理器,世人皆知Intel.AMD,殊不知还有个VIA(威盛),在Intel反垄断世纪大战中VIA公司作为Intel霸权的受害者也最终确认了X86授权,不过VIA与前面两家的实力相差太远,X ...

  7. 华为ensp的安装和使用

    去年学完了Cisco的路由交换,从CCNA学到CCIE.学完之后才发现,整个国内市场好像更倾向于使用华为.H3C这类国有网络设备厂商.不过还好,至少网络的基础理论知识是相同的,于是买了基本关于HUAW ...

  8. Delphi 7下IGDIPlus库的使用

    IGDI+是一个免费开源封装微软GDI+功能的Delphi库,该库使得可以用Delphi语言代码快速简短的实现复杂GDI+应用程序.官方网站:http://www.mitov.com/html/igd ...

  9. wpf中的datagrid绑定操作按钮是否显示或者隐藏

    如图,需要在wpf中的datagrid的操作那列有个确认按钮,然后在某些条件下确认按钮可见,某些情况下不可见的,放在mvc里直接在cshtml页面中if..else就行了. 但是在wpf里不行..网上 ...

  10. 窗体图片背景(两种方法:设置Brush.Bitmap指向图片,别的控件也可以这样)

    var   Bitmap: TBitmap; procedure TForm1.FormCreate(Sender: TObject); begin   Bitmap := TBitmap.Creat ...