Jenkins集成GitLab Webhooks自动化构建
@[toc](Jenkins+GitLab Webhooks自动构建项目)
1 构建步骤
1.1 Jenkins中设置构建触发器
这里先随便写个令牌。
这里先随便写个令牌。我们浏览器直接访问:http://192.168.159.51:8080/job/first/build?token=123123
这里先随便写个令牌。通过观察控制台可以发现,这会自动触发构建任务。但是如果我们换个浏览器或者用PostMan的话会提示我们需要登录。
这里先随便写个令牌。这里需要安装个插件,可以让我们启用token之后免登录。
1.2 Build Authorization Token Root插件安装
在Jenkins得Plugin Manager的可选插件中搜索Build Authorization Token Root
安装完成之后看下文档中的写法:
这个时候用PostMan测试,不过格式按照上图做修改
http://192.168.159.51:8080/buildByToken/build?job=first&token=123123
点击send之后,可以发现,确实触发了构建任务。
控制台也显示了正在构建的过程
1.3 GitLab配置Webhooks
接下来我们把这个地址放到GitLab上,每次提交代码的时候自动触发任务构建就行
URL输入如下链接:
http://192.168.159.51:8080/buildByToken/build?job=first&token=123123
触发来源先选择推送事件和合并请求事件
取消SSL验证,我们现在还没有用到https
报了个错,不要慌,都是节目效果
意思是本地的Webhooks请求是不允许的,那我们设置下让它允许就行了。
Gitlab中切换到管理员选项
设置=>网络
找到出站请求,勾选允许来自web hooks和服务对本地网络的请求
再次添加webhooks
可以看到,webhooks添加成功了。
2 测试webhooks
2.1 测试推送事件
在webhook中点击测试选择推送事件
观察Jenkins是否执行构建
2.2 测试合并请求事件
测试中选择合并请求事件
观察Jenkins是否执行构建
2.3 代码修改提交测试
简单修改下业务类代码,如下
package com.xtt.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/index")
public class IndexController {
@GetMapping("hello")
public String hello(){
return "我欲踏云千万里,庙堂龙吟奈我何";
}
}
代码push到gitlab服务器
观察Jenkins是否正在执行构建任务
这个时候jenkins用的是gitlab中main分支下的代码,并不是我们最新的代码,所以我们还要合并下代码之后自动执行的构建任务才是我们刚刚修改的。
创建合并请求
点击合并之后观察Jenkins是否正在执行构建任务
再访问业务请求,看是否成功
可以看到,这次用的是我们最新的代码。
但是还有个问题,我们每次推送和发起合并但是没有真正执行合并的时候(也就是合并时会执行多次构建),Jenkins也会执行构建,所以这块有点问题,还可以改。
先取消掉webhooks中推送时间触发选项
再次修改下代码提交测试,这次应该不会触发构建了。
package com.xtt.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/index")
public class IndexController {
@GetMapping("hello")
public String hello(){
return "我欲踏云千万里,庙堂龙吟奈我何?\n" +
"我有一剑,请阁下试之,剑名:月夕花晨";
}
}
遗留问题:只要创建了合并任务,即使没有执行审批,就会执行构建,这个后面再说。
关于GitLab钩子自动构建项目就先介绍到这里,怎么样,屌不屌?还有其他的构建方式我得再研究下。上面有的报错是节目效果,否则一下子成功了,后面碰到报错就懵了。
- 点赞
- 收藏
- 关注作者
评论(0)