前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins+GitLab Webhooks自动构建项目

Jenkins+GitLab Webhooks自动构建项目

原创
作者头像
别团等shy哥发育
修改2023-03-01 12:14:13
1.8K0
修改2023-03-01 12:14:13
举报
文章被收录于专栏:全栈开发那些事

1 构建步骤

1.1 Jenkins中设置构建触发器

  这里先随便写个令牌。

image-20230111171453833
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-20230111171321172
image-20230111171403507
image-20230111171403507

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

image-20230111172316932
image-20230111172316932

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

代码语言:text
复制
http://192.168.159.51:8080/buildByToken/build?job=first&token=123123
image-20230111172405047
image-20230111172405047

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

image-20230111172440367
image-20230111172440367

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

image-20230111172451250
image-20230111172451250

1.3 GitLab配置Webhooks

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

image-20230111172711923
image-20230111172711923

  URL输入如下链接:

代码语言:text
复制
http://192.168.159.51:8080/buildByToken/build?job=first&token=123123
image-20230111172924700
image-20230111172924700

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

image-20230111172941753
image-20230111172941753

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

image-20230111173049505
image-20230111173049505

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

image-20230111173019869
image-20230111173019869

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

  Gitlab中切换到管理员选项

image-20230111173144413
image-20230111173144413

  设置=>网络

image-20230111173155459
image-20230111173155459

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

image-20230111173213725
image-20230111173213725

  再次添加webhooks

image-20230111173259936
image-20230111173259936
image-20230111173328253
image-20230111173328253

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

2 测试webhooks

2.1 测试推送事件

  在webhook中点击测试选择推送事件

image-20230111173513723
image-20230111173513723

  观察Jenkins是否执行构建

image-20230111173747129
image-20230111173747129

2.2 测试合并请求事件

  测试中选择合并请求事件

image-20230111173823627
image-20230111173823627

  观察Jenkins是否执行构建

image-20230111173840517
image-20230111173840517

2.3 代码修改提交测试

  简单修改下业务类代码,如下

代码语言:java
复制
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
image-20230111174113238

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

image-20230111174200033
image-20230111174200033
image-20230111174220653
image-20230111174220653

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

  创建合并请求

image-20230111174434600
image-20230111174434600
image-20230111174557125
image-20230111174557125

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

image-20230111174626749
image-20230111174626749

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

image-20230111174807063
image-20230111174807063

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

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

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

image-20230111175025990
image-20230111175025990

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

代码语言:java
复制
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
image-20230111175325426

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 构建步骤
    • 1.1 Jenkins中设置构建触发器
      • 1.2 Build Authorization Token Root插件安装
        • 1.3 GitLab配置Webhooks
        • 2 测试webhooks
          • 2.1 测试推送事件
            • 2.2 测试合并请求事件
              • 2.3 代码修改提交测试
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档