jenkins + gitlab 配置webhook

应用场景

jenkins 发版任务在测试环境中由于需要经常发版调试,而且不像生产环境存在业务持续稳定性需求,所以可以把测试环境发版权限放开给开发人员或者配置webhook 实现推送代码后的自动发版。

Jenkins  端配置

Build Triggers 模块下配置触发器,webhook 相关的触发有如下三种:

1、Trigger builds remotely (e.g., from scripts)

2、Build when a change is pushed to GitLab. GitLab CI Service URL: http://x.x.x.x:8888/project/project-name

3、Generic Webhook Trigger
Generic Webhook Trigger 功能强大,此处介绍它的使用配置,前提是安装相关的插件,才能使用,此处默认已经安装了。

1、触发发版的url

2、Post content parameters

就是发送发版的请求的请求体中的内容,可以通过勾选后面的Print post content 在发版的时候打印请求的请求体内容就会知道都有哪些数据被发送过来,一个完整的请求体以json格式展示如下

{"object_kind":"tag_push",                      #触发类型,有tag推送或者分支推送等
 "before":"0000000000000000000000000000000000000000",       #推送前的id ,如果为00..表示新建
 "after":"c4365c6029f00aeddf33dab026c2590312ed6743",       #新建tag 后的id
 "ref":"refs/tags/v0.7dev",                       #推送的tag。通过$.ref 来提取
 "checkout_sha":"c4365c6029f00aeddf33dab026c2590312ed6743",
 "message":null,                            #message表示打tag 的时候标注的备注信息,例如git  tag v1.1 -m "备注信息"
 "user_id":435,
 "user_name":"kzf",        
 "user_email":"[email protected]","project_id":796,
 "repository":{"name":"practice",                  #仓库信息如下
               "url":"[email protected]:kzf/practice.git",
               "description":"个人练习使用",
               "homepage":"http://[email protected]:kzf/practice", 
         "git_http_url":"http://x.x.x.x/kzf/practice.git",
         "git_ssh_url":"[email protected]:kzf/practice.git",
         "visibility_level":10}, 
         "commits":[{"id":"c4365c6029f00aeddf33dab026c2590312ed6743",  #commits里面是列表,通过$..commits[0]表示提取它的第一个列表所有内容
                 "message":"del dev1\n",                #提交的时候的commit 信息,例如git commit -m "提交信息",
                "timestamp":"2020-04-12T18:17:16+08:00",      #$..commit[0].timestamp 表示提取此字段
                 "url":"http://x.x.x.x/kzf/practice/commit/c4365c6029f00aeddf33dab026c2590312ed6743", 
                "author":{"name":"feefsdf","email":"[email protected]"}}],
 "total_commits_count":1} 
View Code

具体配置示例

 

3、请求的验证token

当发版的请求过来后jenkins 要通过token验证请求,可以把每个项目的项目名称作为token配置此处,这样每个项目都是唯一的,例如gitlab 端发送请求 http://JENKINS_URL/generic-webhook-trigger/invoke?token=test1 过来后,这样每个项目能够区别开来不可用相同的token 那样就会把相同token 项目都发版了。

4、Optional filter

此处作用是条件判断,只有符合Expression中定义的正则的变量Text ,才会触发发版否则不会发版。Text处的变量是通过前面Post content parameters 区域提取的变量,message 。

   

 下面就是在post content parameters 处提取的变量message ,这个变量名Variable 随便定义,Expression 中都是请求头里面存在的json格式的key。

 其他配置可以默认或者不配置即可。

gitlab 端的配置

找到发版任务对应的git 仓库项目,编辑>webhooks,添加触发发版的url接口。

 

猜你喜欢

转载自www.cnblogs.com/fanggege/p/12699978.html