持续部署之gitlab提交代码触发自动构建 Jenkins 任务
- 一、准备Jenkins环境
- 二、安装gitlab插件
- 三、新建构建任务
- 1. 新建maven构建任务
- 2. 源码管理
- 3. 配置触发器
- 4. 设置构建过程
- 5. 设置构建之后的操作
- 四、gitlab 配置触发器 webhooks
一、准备Jenkins环境
首先要有一个正常可用的Jenkins,这里不再赘述Jenkins环境的搭建,默认已有Jenkins环境。
docker 部署 Jenkins 可参考之前的文章:使用Docker安装Jenkins
二、安装gitlab插件
持续部署的第一步需要检查是否安装gitlab插件: gitlab hook
插件 和 gitlab
插件
- 点击 系统管理(Manage jenkins)–插件管理
- 可以看到 我这里已经安装过了,如果没有安装,可以直接在
可选插件
标签里面搜gitlab,按照提示安装对应的插件。
三、新建构建任务
1. 新建maven构建任务
点击左侧菜单栏的新建任务
,创建第一个任务: Test_Job
2. 源码管理
这里创建一个自动构建maven项目的任务。源码管理这里选择的git,配置上自己的仓库,如果没有Credentials
令牌,可以点击后面的添加,添加有拉取代码权限的账号。
3. 配置触发器
触发器可以灵活配置:
Allowed branches :
Allow all branches to trigger this job #允许所有分支触发此作业
Filter branches by name #按名称过滤分支
Include :dev #允许触发构建的分支,dev 分支提交会自动构建
Exclude:master #排除触发构建的分支,此时 master 分支提交不会自动构建
Filter branches by regex #通过正则表达式过滤分支
Source Branch Regex: #源分支正则表达式
Target Branch Regex:.*dev #目标分支正则表达式,允许触发构建的 dev 分支
Filter merge request by label #按标签过滤合并请求
Include: #允许触发构建的标签
Exclude: #排除触发自动构建的标签
这里可以根据需要设置触发的分支。我这里选择develop, 然后点击Generate
生成 token。
4. 设置构建过程
这里设置构建前执行shell 配置jdk环境变量,这里可以根据需要设置构建前的步骤。
配置 POM位置和构建的命令:
我这里的配置maven构建命令是这样,根据自己的项目配置,设置maven构建命令。
5. 设置构建之后的操作
这里使用将打包好的文件:cavd-web-server-2.0.tar.gz
,上传至部署的服务器:192.168.104.103
说明:
这里选择了 Run only if build succeeds
表示仅在构建成功后运行此步骤。
- Source files 构建完成的文件,这里的位置需要对Jenkins来说是可见的,否则找不到该文件,是不行的。
-
Remote directory
表示上传至远程文件夹的位置。 -
Exec command
是直接在控制台执行的命令。这里是针对Jenkins内部的,不是远程服务器。
保存后,去gitlab上配置触发器。
四、gitlab 配置触发器 webhooks
点击下面的 Add webhook
新增。Project Hooks表示添加成功。
然后点击Test、这里我选择Push events进行测试验证一下,可以看到页面会自动发起触发器请求,正常会显示:Hook executed successfully: HTTP 200
状态码是200 表示请求成功。
由于我这里gitLab到Jenkins的网络暂时是不通的,导致点击测试后,提示:Hook execution failed: execution expired
这里提示:Hook execution failed: execution expired
,点击 Edit 可以进去看到具体的webhook日志
其中:Request details
可以看到具体的请求内容。
这里可以使用postman 工具测试下,看下请求的响应是什么。是否是网络不通的原因,还是Jenkins配置的原因。
可以看到 使用postman请求,响应码是200,但是没有触发构建任务。
然后查了下,这个触发的URL 貌似应该这样写:http://<jenkisn的IP地址和端口>/gitlab/build_now/<jenkins的job名称>
例如jenkins的IP地址为192.168.104.51:9999
,job名称是Test_Job
,那么该URL为http://192.168.104.51:9999/gitlab/build_now/Test_Job
所以我直接将ip地址改为jenkins的ip地址,重新获取token,再次点击测试 出现http 200,表示成功
看了下Jenkins 也正常开始构建了。
然后可以看到,控制台输出为:push触发。
至此,一个最简单的gitlab触发Jenkins任务构建,就完成了。这里触发之后的构建内容可以根据自己的需要在Jenkins上面灵活配置。