Jenkins结合webhook功能实现提交代码自动触发构建

jenkins结合webhook功能实现自动触发构建

接着前一篇文章docker部署jenkins+gitlab自动构建打包推送镜像至远程仓库内容中使用的环境继续操作,探索一下webhook的自动触发功能。

Gitlab的Webhook功能,通过Webhook的相关设置,可以实现代码Push后,自动去触发jenkins上的构建动作,省去人工手动构建。

这种方式适合用在测试环境中,进行提交代码自动打包发布进行测试。并且测试环境可以只用latest版本,不用做版本控制

新建一工程

使用maven打包

《Jenkins结合webhook功能实现提交代码自动触发构建》

配置git仓库地址

《Jenkins结合webhook功能实现提交代码自动触发构建》

设置构建触发器为 webhook

《Jenkins结合webhook功能实现提交代码自动触发构建》

使用maven打包

《Jenkins结合webhook功能实现提交代码自动触发构建》

选择进行打包后的操作

《Jenkins结合webhook功能实现提交代码自动触发构建》
每次使用的latest版本发布,停止容器后要将原来系统中的latest版本删掉重新拉取,如果不删掉jenkins不会进行拉取最新内容的镜像,构建过程也不会有错误提示,所以过程是:删容器 > 删镜像 > 下载启动容器
如上jenkins工程设置完成后去设置gitlab的webhook

gitlab设置webhook

将上面构建触发器中的URL复制到gitlab中进行配置

《Jenkins结合webhook功能实现提交代码自动触发构建》

配置gitlab webhook

《Jenkins结合webhook功能实现提交代码自动触发构建》

下面添加即可,点击测试

测试出现如下错误:

Hook execution failed: URL ‘http://192.168.2.180:8088/project/test-hook’ is blocked: Requests to the local network are not allowed

gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录修改配置

《Jenkins结合webhook功能实现提交代码自动触发构建》

再点测试,继续报错:
《Jenkins结合webhook功能实现提交代码自动触发构建》

原因:

由于Jenkins的安全策略配置了CSRF跨站点保护。

解决方法:

进入Jenkins,系统管理–>全局安全配置,勾选匿名用户具有可读权限和去掉CSRF防止跨站点请求伪造

《Jenkins结合webhook功能实现提交代码自动触发构建》

修改后应用保存,再测试,任然报错,查了一下文档,jenkins上还有一处需要修改,如下:

点击 系统管理 -> 系统设置 -> 将Gitlab配置项处的Enable authentication for ‘/project’ end-point 后面的对勾取消,应用保存

《Jenkins结合webhook功能实现提交代码自动触发构建》

gitlab再次测试成功

《Jenkins结合webhook功能实现提交代码自动触发构建》

至此,webhook配置完成,下面进行自动触发构建测试

测试自动构建

在jenkins容器的宿主机上拉取git仓库代码至本地进行修改后上传

将代码后面加添加点内容然后本地提交至git仓库

[root@jenkins test-prod]# vim  src/main/java/com/example/demo/DemoApplication.java

return "Hello World!,webhook-test,gudaoyufu.com.";

提交代码

[root@jenkins test-prod]# git add .
[root@jenkins test-prod]# git commit -m 'gudaoyufu.com.'
[master ee2d56d] gudaoyufu.com.
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins test-prod]# git push
#执行git push 指令后查看jenkins任务的构建状态如下图

《Jenkins结合webhook功能实现提交代码自动触发构建》
代码更新,jenkins被触发自动构建了,到远程docker主机上查看容器有没有启动,访问服务内容确认是否正常

[root@tccp ~]# docker ps
CONTAINER ID        IMAGE                                  COMMAND                  CREATED              STATUS                PORTS                               NAMES
546a68ce021e        192.168.2.199:5000/tccp/demos:latest   "java -Djava.securit…"   About a minute ago   Up About a minute     0.0.0.0:8888->8080/tcp              demos

《Jenkins结合webhook功能实现提交代码自动触发构建》

说明成功了。这样开发每次提交代码后就自动进行打包发布测试。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注