Jenkins-[配置作业触发器|解析GET/HEADER/POST请求数据]

root
233
文章
0
评论
2021年9月13日19:13:19 评论 2599字阅读8分39秒

Jenkins-[配置作业触发器|解析GET/HEADER/POST请求数据]

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

安装配置Generic WebHook

插件名称:

  • Generic Webhook Trigger
  • rebuild

 

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

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

Jenkins作业配置触发器

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

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

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

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

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

$表示整体

$.name:指定变量

2.Header parameters: 获取Header中的参数

value filter一般不用,定义匹配规则的

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

curl http://192.168.1.110:8080/generic-webhook-trigger/invoke?runopts=gitlab

4.Token: 给URL添加一个触发的认证,这个值可以自己定义

get请求的方式

curl http://192.168.1.110:8080/generic-webhook-trigger/invoke?token=devops-service

远程执行

打印调试信息到日志中

  • 最下面2个勾上

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

实践:demo

解析GET/HEADER/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.110:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service'
{"jobs":{"demo-pipeline-service":{"regexpFilterExpression":"","triggered":true,"resolvedVariables":{},"regexpFilterText":"","id":209,"url":"queue/item/209/"}},"message":"Triggered jobs."}[root@zeyang-nuc-service ~]#

解析GET数据

  • 户端发送Get请求, 带有两个参数 version 和 username 。
http://192.168.1.110:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service&version=1.1.1&username=jenkins
  • enkins 配置Generic hook,获取请求参数versionusername参数名称要一致

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

  • 通过jenkinsfile读取传递的参数
println("${username}")
println("${version}")

 

解析HEADER参数数据

  • 客户端发送请求(什么请求都可以,这里的header与请求类型无关), 带有两个参数 header_name 和 header_id 。
curl --location --request GET 'http://192.168.1.110:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service' \
--header 'header_name: jenkins' \
--header 'header_id: 100'
  • Jenkins 配置Generic hook,获取请求参数header_nameheader_id 。

  • 通过jenkinsfile读取传递的参数
println("${header_id}")
println("${header_name}")
println(header_id)
println(header_name)

String headerName = "${header_id}"
println(headerName)


//pipeline {  
//}

 

解析POST数据

  • 客户端发送POST请求, 参数存储在body体中参考POSTMAN中的样例
curl --location --request POST 'http://192.168.1.110:8080/generic-webhook-trigger/invoke?token=demo-pipeline-service' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "zhangsan",
    "id": "123",
    "group1": {
        "name": "jenkins",
        "id" : "001",
        "age": "40"
    }
}'
  • Jenkins 配置触发器来获取Post参数。

获取所有数据

获取username字段

获取group1Name字段

  • Jenkinsfile中使用参数
println("所有body数据 --> ${allData}")
println('最外层name ---> $.name' + "${userName}")
println('第二层name ---> $.group1.name' + "${group1Name}")

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2021年9月13日19:13:19
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
jenkins-邮件通知|gitlab配置邮箱 Jenkins

jenkins-邮件通知|gitlab配置邮箱

jenkins-邮件通知|gitlab配置邮箱 gitlab-配置邮箱地址 默认情况可能每个Gitlab用户没有配置邮箱的, 需要Gitlab用户要配置好邮箱。 点击头像进入 edit profile...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: