java怎么拦截某个对象
245
2022-09-13
Jenkins 进阶02 Generic Webhook 实践
预备知识
目标:学习HTTP基础知识,掌握如何使用Postman和Curl调用接口的方法。
Web HTTP基础知识
HTTP请求是什么?
HTTP超文本传输协议,是确保服务器(Server)和客户端(Client)之间的正确通信。
一个请求和响应的过程:
Request 用户通过浏览器向我们的服务端发起请求。Response服务端将客户端请求的资源数据进行响应。
调用接口的方法
请求类型:
GET 向指定的URL请求资源,可携带参数(明文)。POST 向指定的URL提交资源,表单数据提交,数据进行封装(比Get方法安全)。PUT 与POST类似,通常用于对资源数据的更新修改。DELETE 删除指定的资源。
演示:以baidu为例,用Postman调用一个接口的过程。并结合使用Curl操作。
HTTP常见的错误码
1xx : 服务已收到请求,请求者继续执行操作。2xx:请求成功,常见(201)3xx:请求成功,页面发生重定向(301)
4xx:客户端发生了错误
常见的是资源找不到了(404)资源请求需要认证认证失败(401)(有些时候需要登入,那么就要传入认证信息,认证信息也就是账号和密码,出现401说明认证有问题,说明账号密码有问题)认证成功但是权限不够(403)
5xx: 服务端发生了错误(客户端请求的参数都是正确的,但是服务端在解析处理的时候发生了错误)
网关超时(504)内部错误(500)网关错误(502)服务不可用(503)
Jenkins Generic Webhook实践
目的: 为Jenkins作业添加触发器,便于其他系统调用。(比如在Gitlab里面做个某个动作去触发Jenkins作业去运行,这个插件是通用的,一般不管是gitlab或者其他系统想要触发Jenkins的话那么就使用这个插件)非常灵活,代价就是需要我们去配置。
安装配置Generic WebHook
插件名称:Generic Webhook Trigger
Can receive any HTTP request, extract any values from JSON or XML and trigger a job with those values available as variables. Works with GitHub, GitLab, Bitbucket, Jira and many more.
重启后,进入一个Pipeline项目设置,已经可以选择这个触发器了....
插件文档:Generic Webhook Trigger | Jenkins plugin
可以看到Jenkins的触发地址,调用这个接口就触发了这个作业。
现在每个流水线都开启了webhook,那么怎么确认触发哪个作业呢
Is triggered by HTTP requests to parameter/invoke?token=TOKEN_HERE 参数A token headertoken: TOKEN_HERE 写入headerA Authorization: Bearer headerAuthorization: Bearer TOKEN_HERE 写到认证
启动Generic Webhook触发器后, 相当于给Jenkins加了一个新的接口(JENKINS_URL 换成自己真实的Jenkins 服务器地址,有端口就加上端口,是域名就写域名。下面是一个参考的URL:
通过参数触发
Query parameter /invoke?token=TOKEN_HERE 参数
使用插件就生成了这样一个接口,通过这个接口就可以去触发Jenkins
"jobs": { "Gitlab-Generic-Webhook-Trigger": { "regexpFilterExpression": "", "triggered": true, #这里为true说明触发了 "resolvedVariables": {}, "regexpFilterText": "", "id": 493, "url": "queue/item/493/" } }, "message": "Triggered jobs."}
如果要传入第二个参数,第一个参数是跟在?号后面,第二个参数会用&符号
加入header触发
也是设置一个key:value
A token header token: TOKEN_HERE 写入header
Jenkins作业配置触发器 认证触发
A Authorization: Bearer header Authorization: Bearer TOKEN_HERE 写到认证
如果要转化为代码的方式,可以使用
#可以看到响应,这样也可以触发jenkins流水[root@jenkins-master ~]# curl --location --request GET '\> --header 'Authorization: Bearer generic-webhook-trigger'{"jobs":{"Gitlab-Generic-Webhook-Trigger":{"regexpFilterExpression":"","triggered":true,"resolvedVariables":{},"regexpFilterText":"","id":499,"url":"queue/item/499/"}},"message":"Triggered jobs."}
上面是三种关于触发Jenkins作业的方式
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~