0
点赞
收藏
分享

微信扫一扫

Jenkins 进阶02 Generic Webhook 实践


Jenkins 进阶02 Generic Webhook 实践_git

预备知识

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

 

Web HTTP基础知识

HTTP请求是什么?

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

一个请求和响应的过程:

Jenkins 进阶02 Generic Webhook 实践_服务端_02

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

调用接口的方法

请求类型:

  • GET 向指定的URL请求资源,可携带参数(明文)
  • POST 向指定的URL提交资源,表单数据提交,数据进行封装(比Get方法安全)。
  • PUT 与POST类似,通常用于对资源数据的更新修改。
  • DELETE 删除指定的资源。

演示:以baidu为例,用Postman调用一个接口的过程。并结合使用Curl操作。

Jenkins 进阶02 Generic Webhook 实践_jenkins_03

 

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​​

Jenkins 进阶02 Generic Webhook 实践_服务端_04

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项目设置,已经可以选择这个触发器了....

Jenkins 进阶02 Generic Webhook 实践_触发器_05

插件文档:​​Generic Webhook Trigger | Jenkins plugin​​

Jenkins 进阶02 Generic Webhook 实践_jenkins_06

Jenkins 进阶02 Generic Webhook 实践_触发器_07

可以看到Jenkins的触发地址,调用这个接口就触发了这个作业。

现在每个流水线都开启了webhook,那么怎么确认触发哪个作业呢

Is triggered by HTTP requests to http://JENKINS_URL/generic-webhook-trigger/invoke

如果A,B两条流水线都开启了,那么想触发A,这个时候可以为其添加token,通过token的值去触发,要是多个项目使用一个token,那么这些流水线都会触发。

 这里有三种方式填入token

  • Query parameter/invoke?token=TOKEN_HERE   参数
  • A token headertoken: TOKEN_HERE  写入header
  • A Authorization: Bearer headerAuthorization: Bearer TOKEN_HERE 写到认证

​​http://​​​​139.198.170.122:8080​​​​/generic-webhook-trigger/invoke​​?token=webhook

上面一句话概括如下:

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

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

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

Jenkins作业配置触发器 通过参数触发

Query parameter /invoke?token=TOKEN_HERE   参数 

Jenkins 进阶02 Generic Webhook 实践_git_08

使用插件就生成了这样一个接口,通过这个接口就可以去触发Jenkins 

http://139.198.170.122:8080/generic-webhook-trigger/invoke?token=generic-webhook-trigger

Jenkins 进阶02 Generic Webhook 实践_触发器_09

Jenkins 进阶02 Generic Webhook 实践_git_10

{
"jobs": {
"Gitlab-Generic-Webhook-Trigger": {
"regexpFilterExpression": "",
"triggered": true, #这里为true说明触发了
"resolvedVariables": {},
"regexpFilterText": "",
"id": 493,
"url": "queue/item/493/"
}
},
"message": "Triggered jobs."
}

 如果要传入第二个参数,第一个参数是跟在?号后面,第二个参数会用&符号

http://139.198.170.122:8080/generic-webhook-trigger/invoke?token=generic-webhook-trigger&user=lulei

Jenkins作业配置触发器 加入header触发

也是设置一个key:value

A token header token: TOKEN_HERE  写入header

Jenkins 进阶02 Generic Webhook 实践_触发器_11

Jenkins作业配置触发器 认证触发

A Authorization: Bearer header Authorization: Bearer TOKEN_HERE 写到认证

Jenkins 进阶02 Generic Webhook 实践_服务端_12

如果要转化为代码的方式,可以使用

Jenkins 进阶02 Generic Webhook 实践_jenkins_13

#可以看到响应,这样也可以触发jenkins流水
[root@jenkins-master ~]# curl --location --request GET 'http://139.198.170.122:8080/generic-webhook-trigger/invoke' \
> --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作业的方式

举报

相关推荐

0 条评论