Jenkins集成GitLab Webhooks自动化构建

举报
别团等shy哥发育 发表于 2023/02/02 10:44:39 2023/02/02
【摘要】 @[toc](Jenkins+GitLab Webhooks自动构建项目) 1 构建步骤 1.1 Jenkins中设置构建触发器  这里先随便写个令牌。  这里先随便写个令牌。我们浏览器直接访问:http://192.168.159.51:8080/job/first/build?token=123123  这里先随便写个令牌。通过观察控制台可以发现,这会自动触发构建任务。但是如果我们换个浏...

@[toc](Jenkins+GitLab Webhooks自动构建项目)

1 构建步骤

1.1 Jenkins中设置构建触发器

  这里先随便写个令牌。

image-20230111171453833

  这里先随便写个令牌。我们浏览器直接访问: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
image-20230111171321172

image-20230111171403507

  安装完成之后看下文档中的写法:

image-20230111172316932

  这个时候用PostMan测试,不过格式按照上图做修改

http://192.168.159.51:8080/buildByToken/build?job=first&token=123123

image-20230111172405047

  点击send之后,可以发现,确实触发了构建任务。

image-20230111172440367

  控制台也显示了正在构建的过程
image-20230111172451250

1.3 GitLab配置Webhooks

  接下来我们把这个地址放到GitLab上,每次提交代码的时候自动触发任务构建就行

image-20230111172711923

  URL输入如下链接:

http://192.168.159.51:8080/buildByToken/build?job=first&token=123123

image-20230111172924700

  触发来源先选择推送事件合并请求事件

image-20230111172941753

  取消SSL验证,我们现在还没有用到https

image-20230111173049505

  报了个错,不要慌,都是节目效果

image-20230111173019869

  意思是本地的Webhooks请求是不允许的,那我们设置下让它允许就行了。

  Gitlab中切换到管理员选项

image-20230111173144413

  设置=>网络
image-20230111173155459

  找到出站请求,勾选允许来自web hooks和服务对本地网络的请求

image-20230111173213725

  再次添加webhooks

image-20230111173259936

image-20230111173328253

  可以看到,webhooks添加成功了。

2 测试webhooks

2.1 测试推送事件

  在webhook中点击测试选择推送事件
image-20230111173513723
  观察Jenkins是否执行构建
image-20230111173747129

2.2 测试合并请求事件

  测试中选择合并请求事件
image-20230111173823627
  观察Jenkins是否执行构建
image-20230111173840517

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服务器

image-20230111174113238

  观察Jenkins是否正在执行构建任务

image-20230111174200033

image-20230111174220653

  这个时候jenkins用的是gitlab中main分支下的代码,并不是我们最新的代码,所以我们还要合并下代码之后自动执行的构建任务才是我们刚刚修改的。

  创建合并请求

image-20230111174434600
image-20230111174557125

  点击合并之后观察Jenkins是否正在执行构建任务

image-20230111174626749

  再访问业务请求,看是否成功

image-20230111174807063

  可以看到,这次用的是我们最新的代码。

  但是还有个问题,我们每次推送和发起合并但是没有真正执行合并的时候(也就是合并时会执行多次构建),Jenkins也会执行构建,所以这块有点问题,还可以改。

  先取消掉webhooks中推送时间触发选项

image-20230111175025990

  再次修改下代码提交测试,这次应该不会触发构建了。

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" +
                "我有一剑,请阁下试之,剑名:月夕花晨";
    }
}

image-20230111175325426

  遗留问题:只要创建了合并任务,即使没有执行审批,就会执行构建,这个后面再说。

  关于GitLab钩子自动构建项目就先介绍到这里,怎么样,屌不屌?还有其他的构建方式我得再研究下。上面有的报错是节目效果,否则一下子成功了,后面碰到报错就懵了。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。