Jenkins 进阶02 Generic Webhook 实践

网友投稿 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小时内删除侵权内容。

上一篇:看看优衣库是如何销库存、做营销的?企业管理者必看!
下一篇:Jenkins 进阶03 Generic Webhook实践 解析GET/POST请求数据
相关文章

 发表评论

暂时没有评论,来抢沙发吧~