CI/CD技术专题「Jenkins实战系列」如何通过Gitlab对接Jenkins构建提交自动触发部署构建体系指南(上部)
Posted 洛神灬殇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CI/CD技术专题「Jenkins实战系列」如何通过Gitlab对接Jenkins构建提交自动触发部署构建体系指南(上部)相关的知识,希望对你有一定的参考价值。
前因后果
最近,发现我们公司的自动化体系做的实在是不咋地,每次提交push完代码之后,还需要登录到服务器进行执行下docker脚本,之后才能拿到镜像,一说到这里我就要吐了,CI/CD做的简直是一团糟,极为不方便,真心是想吐槽一下目前我们公司的自动化部署体系。不过因此也激发了我想法学习一下CI/CD的实现体系,未来自动体系实在不行就靠我们团队给揽过来吧,哈哈 … …
实现路径
总体执行路径就是:首先开发者进行push本地代码到远程GitLab仓库之后,并且只会自动化触发到WebHook钩子的回调函数进行触发Jenkins的构建服务功能,具体大致的流程如下所示。
Jenkins安装Generic Webhook Trigger Plugin插件(不同版本略有不同,本质一样)
首先,我们需要现在Jenkins上面进行安装对应的Generic Webhook Trigger Plugin插件或者也可以安装专门的Gitlab的相关的WebHook组件插件。
以Generic Webhook Trigger Plugin插件为例,它主要用于使得Jenkins去接受对应的URL的Http请求数据,并且可以接受对应的JSON结构的对象数据模型。
新建的项目仓库
首先针对于仓库的基本信息进行配置,主要面向项目名称以及构建的策略,保持默认值即可。
配置源码管理
之后配置对应的源码仓库的配置信息,此处我们就不过多介绍,毕竟相信大家对Jenkins都有了对应的了解和认识。
配置触发器
主要是通过Generic Webhook Trigger勾选选项之后,会进行相关的触发器设置
配置可以针对于请求的参数信息和请求头信息等。
GitLab发送Jenkins的JSON结构案例
# GitLab 发送给 Jenkins 的内容
"object_kind": "push",
"event_name": "push",
"before": "07e1b053d4f699a13e1abfdddbd7c53e7df1436a",
"after": "42b8a70696eb3357963b6f076aed49cced0d20de",
"ref": "refs/heads/release",
"checkout_sha": "42b8a70696eb3357963b6f076aed49cced0d20de",
"message": null,
"user_id": 18,
"user_name": "xxx",
"user_username": "liuchengsheng",
"user_email": "liuchengsheng@xxxxxxx.com",
"user_avatar": "https://www.gravatar.com/avatar/d640f62f6441a0d232dab26113fc1e32?s=80\\u0026d=identicon",
"project_id": 19,
"project":
"id": 19,
"name": "test",
"description": "测试",
"web_url": "http://code.xxxxxxx.cc/liuchengsheng/test",
"avatar_url": null,
"git_ssh_url": "git@code.xxxxxxx.cc:liuchengsheng/test.git",
"git_http_url": "http://code.xxxxxxx.cc/liuchengsheng/test.git",
"namespace": "liuchengsheng",
"visibility_level": 0,
"path_with_namespace": "liuchengsheng/test",
"default_branch": "master",
"ci_config_path": null,
"homepage": "http://code.xxxxxxx.cc/liuchengsheng/test",
"url": "git@code.xxxxxxx.cc:liuchengsheng/test.git",
"ssh_url": "git@code.xxxxxxx.cc:liuchengsheng/test.git",
"http_url": "http://code.xxxxxxx.cc/liuchengsheng/test.git"
,
"commits": [
"id": "42b8a70696eb3357963b6f076aed49cced0d20de",
"message": "six\\n",
"timestamp": "2018-06-04T11:12:10+08:00",
"url": "http://code.xxxxxxx.cc/liuchengsheng/test/commit/42b8a70696eb3357963b6f076aed49cced0d20de",
"author":
"name": "imlcs",
"email": "15224800531@163.com"
,
"added": [
],
"modified": [
"README.MD"
],
"removed": [
]
],
"total_commits_count": 1,
"repository":
"name": "test",
"url": "git@code.xxxxxxx.cc:liuchengsheng/test.git",
"description": "测试",
"homepage": "http://code.xxxxxxx.cc/liuchengsheng/test",
"git_http_url": "http://code.xxxxxxx.cc/liuchengsheng/test.git",
"git_ssh_url": "git@code.xxxxxxx.cc:liuchengsheng/test.git",
"visibility_level": 0
触发器配置介绍
因为gitlab同意或者直接关闭Merge Request时不需要再次触发构建,所以在这里只处理Open Merge Request Event。
Gitlab webhook URL 部分是用来配置gitlab的,token 也是用来配置gitlab的。
filter branch by name的配置说明下:include表示需要跟踪的target branch用逗号分隔。
注意:新版本 jenkins URL 配置中 token 一定要写
配置构建环境
配置对应的【构建环境】以及构建的脚本和触发的方法,所以可以比较方便的建立触发行为,例如:拉去Git仓库、编译源码打包以及最后推送docker hub镜像等操作。
至此对应的GitLab已经完成了所有的对用的HOOK的基本操作,自动构建测试,GitLab 用户在指定分支上提交代码触发 Jenkins 构建
GitLab配置仓库Push事件Hook
配置WebHook
这里的URL就是上面配置触发器时的获取token的配置同理,配置Merge request events才触发这个webhook。
配置System Hook
配置GitLab项目push事件的System Hook,其中对应的System Hook的调用的URL,它会把事件信息发送通过URL发送给Jenkins。
首先会进入GitLab仓库的System Hooks界面,进行编辑勾选对应的Push events的复选框,勾选之后,push操作就会触发对应的url的http请求操作。
至此,目的达到,当开发人员通过gitlab 打开一个merge request时,会自动触发jenkins合并与构建,此外还可以通过Jenkins的后置处理可以通过配置jenkins的邮件提醒,构建成功后通知管理人员,这时再经过必要的代码review后,管理人员正式同意合并代码,此时不会再触发构建;
以上是关于CI/CD技术专题「Jenkins实战系列」如何通过Gitlab对接Jenkins构建提交自动触发部署构建体系指南(上部)的主要内容,如果未能解决你的问题,请参考以下文章
CI/CD技术专题「Jenkins实战系列」总结归纳Jenkins的安装使用和配置流程介绍
CI/CD技术专题「Jenkins实战系列」jenkins+pipeline构建自动化部署
CI/CD技术专题「Jenkins实战系列」重塑Jenkins服务进行自动合并的方案实现(纠正错误)
CI/CD技术专题「Jenkins实战系列」总结归纳Jenkins的安装使用和配置流程介绍