Jenkins集成GitLab Webhooks自动化构建
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
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钩子自动构建项目就先介绍到这里怎么样屌不屌?还有其他的构建方式我得再研究下。上面有的报错是节目效果否则一下子成功了后面碰到报错就懵了。