结合Gitlab Plugin的方式监听gitlab操作

第一步(gitlab)创建gitlab的访问令牌

第二步 (Jenkins)Jenkins安装gitlab/gitlab hook插件

安装gitlabgitlab hookgitlab hook的作用是可以接收gitlab hook传过来的参数

这里注意:新版jenkins中不再支持gitlab hook插件,如果插件管理中没看到gitlab hook,可以换成Generic Webhook Trigger,下文中有介绍

第三步(Jenkins)配置gitlab的凭证

第四步(Jenkins) 配置gitlab的连接

第五步(Jenkins)创建jenkins构建项目

第六步(gitlab)配置Hook

允许hook和服务访问本地网络

新版的gitlab为了安全默认禁止了本地局域网地址调用web hook

我们在设置里允许就行,具体步骤如下:

第七步 测试触发

1
2
3
4
touch 1.txt
git add .
git commit -m "测试自动触发jenkins"
git push origin master

结合Generic Webhook Trigger的方式

Generic Webhook Trigger是Jenkins插件之一,它的作用是允许Jenkins通过HTTP POST请求接收任何类型的数据,并将其转换为Jenkins可识别的格式。这个插件可以被用于许多场景,例如:

  1. 与外部系统集成:通过将Generic Webhook Trigger暴露给外部系统,可以让外部系统向Jenkins发送请求触发构建或执行其他操作。
  2. 自动化测试:可以使用Generic Webhook Trigger将测试结果发送给Jenkins,以便Jenkins可以自动化处理测试结果并执行后续操作。
  3. 自定义构建触发器:可以使用Generic Webhook Trigger自定义构建触发器,例如,只有当特定的数据被发送到Jenkins时才会触发构建。

总之,Generic Webhook Trigger可以帮助Jenkins与外部系统进行集成,并提供更灵活的构建触发方式。

插件文档:https://plugins.jenkins.io/generic-webhook-trigger/

安装Generic Webhook Trigger插件

在“系统设置–插件管理–可选插件”界面搜索:Generic Webhook Trigger,可以看到,点击安装,然后重启。

这里是我已经装过,所以在“已安装”界面看下

搭建工作

一、创建Job

这里创建自由风格项目

二、配置Job
1)源码管理
2)构建触发器

由HTTP请求触发http://JENKINS_URL/generic-webhook触发器/调用

3)Post content parameters:获取调用接口传进来的数据

调用的时候:这里要把 JENKINS_URL 换成自己真实的Jenkins 服务器地址,有端口就加上端口,是域名就写域名。下面是一个参考的URL:

1
http://192.168.1.200:8080/generic-webhook-trigger/invoke 

JsonPath语法文档:https://github.com/json-path/JsonPath

4)Token: 给URL添加一个触发的认证
1
curl http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=skyfish2021
5)Header parameters:获取Header中的参数

客户端发送请求(什么请求都可以,这里的header与请求类型无关), 带有两个参数 header_name 和 header_id 。

1
2
3
curl --location --request GET 'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service' \ 
--header 'header_name: jenkins' \
--header 'header_id: 100'

Jenkins 配置Generic hook,获取请求参数header_name 和 header_id 。

6)Request parameters:获取URL中的请求参数
1
curl http://192.168.1.200:8080/generic-webhook-trigger/invoke?runopts=gitlab 
7)拉取代码仓库的条件/打印调试信息到日志中
8)触发条件过滤:仅满足条件才能触发此作业

Rebuilder 插件使用

可以直接携带原触发参数进行触发,不用重复触发(不用在重复的提交代码了)。

进入某一次构建后,可以点击rebuild。