
1. 预备知识
目标:学习HTTP基础知识,掌握如何使用Postman和Curl调用接口的方法。
1.1 Web HTTP基础知识 HTTP请求是什么?HTTP超文本传输协议,是确保服务器(Server)和客户端(Client)之间的正确通信。
一个请求和响应的过程:
Request用户通过浏览器向服务端发起请求。Response服务端将客户端请求的资源数据进行响应。
HTTP常见的错误码1xx : 服务已收到请求,请求者继续执行操作。
2xx:请求成功,常见(201)
3xx:请求成功,页面发生重定向(301)
4xx:客户端发生了错误
- 常见的是资源找不到了(404)
- 资源请求需要认证认证失败(401)
- 认证成功但是权限不够(403)
5xx:服务端发生了错误
- 网关超时(504)
- 内部错误(500)
- 网关错误(502)
- 服务不可用(503)
目的:为Jenkins作业添加触发器,便于其他系统调用。
安装配置Generic WebHook插件名称:Generic Webhook Trigger
重启后,进入一个Pipeline项目设置,已经可以选择这个触发器了....
插件文档:https://plugins.jenkins.io/generic-webhook-trigger/

启动Generic Webhook触发器后, 相当于给Jenkins加了一个新的接口(http://JENKINS_URL/generic-webhook-trigger/invoke)。
调用的时候:这里要把 JENKINS_URL 换成自己真实的Jenkins 服务器地址,有端口就加上端口,是域名就写域名。下面是一个参考的URL:
http://192.168.1.200:8080/generic-webhook-trigger/invoke
Post content parameters:获取调用接口传进来的数据
JsonPath语法文档:https://github.com/json-path/JsonPath
Header parameters:获取Header中的参数
Request parameters:获取URL中的请求参数
curl http://192.168.1.200:8080/generic-webhook-trigger/invoke?runopts=gitlab
Token: 给URL添加一个触发的认证
curl http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=devops-service
打印调试信息到日志中
触发条件过滤:仅满足条件才能触发此作业
实践:demo
解析GET/POST请求数据传参注意,第一个参数使用?号连接, 后面的参数使用&符号连接。
?token=demo-pipeline-service&user=jenkins&a=1&b=2
演示将postman中的请求转换curl方式。
[root@zeyang-nuc-service ~]# curl --location --request GET 'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service'
客户端发送Get请求, 带有两个参数 version 和 username 。
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日志中能够打印出获取的值,则正常)
通过jenkinsfile读取传递的参数
println("${username}") 客户端发送请求(什么请求都可以,这里的header与请求类型无关), 带有两个参数 header_name 和 header_id 。
curl --location --request GET 'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service'
Jenkins 配置Generic hook,获取请求参数header_name 和 header_id 。
通过jenkinsfile读取传递的参数
println("${header_id}") 客户端发送POST请求, 参数存储在body体中(参考POSTMAN中的样例)
curl --location --request POST 'http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service'
Jenkins 配置触发器来获取Post参数。
获取所有数据
获取username字段
获取group1Name字段
Jenkinsfile中使用参数
println("所有body数据 --> ${allData}") 安装插件:Pipeline Utility Steps
readJSON:处理json数据
println("所有body数据 --> ${allData}") 可以直接携带原触发参数进行触发,不用重复触发(不用在重复的提交代码了)。
进入某一次构建后,可以点击rebuild。
























