玩转触发器之Jenkins Generic Webhook使用技巧

2025-05-29 0 70

玩转触发器之Jenkins Generic Webhook使用技巧

1. 预备知识

目标:学习HTTP基础知识,掌握如何使用Postman和Curl调用接口的方法。

1.1 Web HTTP基础知识

HTTP请求是什么?

HTTP超文本传输协议,是确保服务器(Server)和客户端(Client)之间的正确通信。

一个请求和响应的过程:

玩转触发器之Jenkins Generic Webhook使用技巧

Request用户通过浏览器向服务端发起请求。Response服务端将客户端请求的资源数据进行响应。

HTTP常见的错误码

1xx : 服务已收到请求,请求者继续执行操作。

2xx:请求成功,常见(201)

3xx:请求成功,页面发生重定向(301)

4xx:客户端发生了错误

  • 常见的是资源找不到了(404)
  • 资源请求需要认证认证失败(401)
  • 认证成功但是权限不够(403)

5xx:服务端发生了错误

  • 网关超时(504)
  • 内部错误(500)
  • 网关错误(502)
  • 服务不可用(503)

2. Jenkins Generic Webhook实践

目的:为Jenkins作业添加触发器,便于其他系统调用。

安装配置Generic WebHook

插件名称:Generic Webhook Trigger

玩转触发器之Jenkins Generic Webhook使用技巧

重启后,进入一个Pipeline项目设置,已经可以选择这个触发器了….

玩转触发器之Jenkins Generic Webhook使用技巧

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

玩转触发器之Jenkins Generic Webhook使用技巧

Jenkins作业配置触发器

启动Generic Webhook触发器后, 相当于给Jenkins加了一个新的接口(http://JENKINS_URL/generic-webhook-trigger/invoke)。

玩转触发器之Jenkins Generic Webhook使用技巧

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

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

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

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

玩转触发器之Jenkins Generic Webhook使用技巧

Header parameters:获取Header中的参数

玩转触发器之Jenkins Generic Webhook使用技巧

玩转触发器之Jenkins Generic Webhook使用技巧

Request parameters:获取URL中的请求参数

  1. curlhttp://192.168.1.200:8080/generic-webhook-trigger/invoke?runopts=gitlab

玩转触发器之Jenkins Generic Webhook使用技巧

Token: 给URL添加一个触发的认证

  1. curlhttp://192.168.1.200:8080/generic-webhook-trigger/invoke?token=devops-service

玩转触发器之Jenkins Generic Webhook使用技巧

打印调试信息到日志中

玩转触发器之Jenkins Generic Webhook使用技巧

触发条件过滤:仅满足条件才能触发此作业

玩转触发器之Jenkins Generic Webhook使用技巧

实践:demo

玩转触发器之Jenkins Generic Webhook使用技巧

解析GET/POST请求数据

传参注意,第一个参数使用?号连接, 后面的参数使用&符号连接。

  1. ?token=demo-pipeline-service&user=jenkins&a=1&b=2

演示将postman中的请求转换curl方式。

玩转触发器之Jenkins Generic Webhook使用技巧

  1. [root@zeyang-nuc-service~]#curl–location–requestGET'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service'
  2. {"jobs":{"demo-pipeline-service":{"regexpFilterExpression":"","triggered":true,"resolvedVariables":{},"regexpFilterText":"","id":209,"url":"queue/item/209/"}},"message":"Triggeredjobs."}[root@zeyang-nuc-service~]#

解析GET数据

客户端发送Get请求, 带有两个参数 version 和 username 。

  1. http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service&version=1.1.1&username=jenkins

Jenkins 配置Generic hook,获取请求参数version 和 username (参数名称要一致)

玩转触发器之Jenkins Generic Webhook使用技巧

验证测试(Jenkins日志中能够打印出获取的值,则正常)

玩转触发器之Jenkins Generic Webhook使用技巧

通过jenkinsfile读取传递的参数

  1. println("${username}")
  2. println("${version}")

解析HEADER参数数据

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

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

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

玩转触发器之Jenkins Generic Webhook使用技巧

通过jenkinsfile读取传递的参数

  1. println("${header_id}")
  2. println("${header_name}")
  3. println(header_id)
  4. println(header_name)
  5. StringheaderName="${header_id}"
  6. println(headerName)
  7. //pipeline{
  8. //}

解析POST数据

客户端发送POST请求, 参数存储在body体中(参考POSTMAN中的样例)

  1. curl–location–requestPOST'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service'\\
  2. –header'Content-Type:application/json'\\
  3. –data-raw'{
  4. "name":"zhangsan",
  5. "id":"123",
  6. "group1":{
  7. "name":"jenkins",
  8. "id":"001",
  9. "age":"40"
  10. }
  11. }'

Jenkins 配置触发器来获取Post参数。

获取所有数据

玩转触发器之Jenkins Generic Webhook使用技巧

获取username字段

玩转触发器之Jenkins Generic Webhook使用技巧

获取group1Name字段

玩转触发器之Jenkins Generic Webhook使用技巧

Jenkinsfile中使用参数

  1. println("所有body数据–>${allData}")
  2. println('最外层name—>$.name'+"${userName}")
  3. println('第二层name—>$.group1.name'+"${group1Name}")

扩展流水线解析JSON数据

安装插件:Pipeline Utility Steps

玩转触发器之Jenkins Generic Webhook使用技巧

readJSON:处理json数据

  1. println("所有body数据–>${allData}")
  2. defwebHookData=readJSONtext:"${allData}"
  3. StringuserName=webHookData["name"]
  4. StringuserName2=webHookData.name
  5. Stringgroup1Name=webHookData["group1"]["name"]
  6. Stringgroup1Name2=webHookData.group1.name
  7. println('最外层name—>$.name'+"${userName}")
  8. println('最外层name—>$.name'+"${userName2}")
  9. println('第二层name—>$.group1.name'+"${group1Name}")
  10. println('第二层name—>$.group1.name'+"${group1Name2}")

Rebuilder 插件使用

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

玩转触发器之Jenkins Generic Webhook使用技巧

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

玩转触发器之Jenkins Generic Webhook使用技巧

原文链接:https://mp.weixin.qq.com/s/jjzmNubFrmI5qKGy9Dv5WA

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 玩转触发器之Jenkins Generic Webhook使用技巧 https://www.kuaiidc.com/91907.html

相关文章

发表评论
暂无评论