热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【06】Jenkins:Gitlab自动触发构建以及钉钉通知

写在前面的话在某些时候,我们希望能够实现这样一个功能,当用户提交东西到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://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#################################################################
#
作者&#xff1a;Dylan <1214966109&#64;qq.com>
#
日期&#xff1a;2019-07-18
#
作用&#xff1a;机器人通知
#
#################################################################################################################################
#
钉钉消息通知
#
################################################################
function SEND_MESSAGE_TO_DINGDING() {/usr/bin/curl "$1" -H &#39;Content-Type: application/json&#39; -d "
{\"actionCard\": {\"title\": \"$2\", \"text\": \"$3\", \"hideAvatar\": \"0\", \"btnOrientation\": \"0\", \"btns\": [
{\"title\": \"$2\", \"actionURL\": \"$4\"
}]}, \"msgtype\": \"actionCard\"}"
}#################################################################
#
钉钉消息变量
#
################################################################
#
当前时间
TIME_NOW&#61;$(date &#43;%Y年%m月%d日-%H:%M:%S)
# 机器人 webhook 地址
DINGDING_TOKEN_URL&#61;&#39;https://oapi.dingtalk.com/robot/xxxxxx&#39;
# 消息标题
DINGDING_TITLE&#61;"Oops&#xff0c;GitLab项目更新啦~"
# 消息正文
DINGDING_CONTENT&#61;"更新用户&#xff1a;${SCM_CHANGELOG}\n\n更新时间&#xff1a;${TIME_NOW}"
# Jenkins 地址
JENKINS_URL&#61;&#39;http://192.168.10.202:8080/jenkins&#39;
# Jenkins 构建日志地址
JENKINS_JOB_URL&#61;"${JENKINS_URL}/job/${JOB_NAME}/${BUILD_NUMBER}/console"#################################################################
#
发送钉钉消息
#
################################################################
SEND_MESSAGE_TO_DINGDING ${DINGDING_TOKEN_URL} ${DINGDING_TITLE} ${DINGDING_CONTENT} ${JENKINS_JOB_URL}

注意上图红色部分需要替换成为自己的配置&#xff01;

如果不知道怎么配置钉钉机器人的 webhook&#xff0c;可以参考我另外一篇博客&#xff1a;

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

 

4. 此时提交代码测试&#xff0c;最终钉钉消息&#xff1a;

 

5. 至此通知配置完成&#xff01;

 

 

小结

 

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

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

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

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

转:https://www.cnblogs.com/Dy1an/p/11207966.html



推荐阅读
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • 我创建了一个SSH密钥,当我以admin身份在GitBash中运行ssh-Tgit@gitlab.com时,我得到W ... [详细]
author-avatar
enbel2012_707
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有