Generic Webhook Trigger插件

Generic Webhook Trigger 是一款通用触发器。可以接收任何HTTP请求,从JSON或XML中提取任何值,并使用这些值作为变量触发作业。可以与GitHub、GitLab、Bitbucket、Jira以及更多应用程序一起使用。

这里演示与 gitlab 集成

下载 Generic Webhook Trigger 插件

img

截图是已经安装好了。如果是没有安装过的话,在可选插件搜索安装。

使用 Generic Webhook Trigger 插件

  • 配置job,找到构建触发器
    img

  • gitlab 配置的构建触发钩子,注意修改Jenkins访问协议(http/https)
    img

  • 添加 Post content parameters 配置,只需要添加两个值,其他都不需要填写。

    这个是匹配 gitlab 触发构建的分支版本
    img

    这个是匹配 gitlab 触发构建的项目名称
    img

    这个是匹配 gitlab 触发构建的用户名
    img

  • 设置 gitlab 触发 Jenkins 的 token 参数
    img

  • 对 post 匹配到的变量进行判断是否触发该 job 任务运行。注意截图上没有下划线,是因为显示问题,实际上有 _ 的。
    img

gitlab 打开出站请求流量,需要管理员权限设置

img
img
img

gitlab配置项目触发钩子

img
格式:http[s]😕/JENKINS_URL/[子路径/]generic-webhook-trigger/invoke[?token=Jenkins job配置的token值]
img
img

测试验证

img
返回 200 状态码,则正常触发构建
img
Jenkins查看
img

jenkinsfile文件

注意:triggers配置必须在 Jenkins 手工构建一次后,gitlab通过钩子才能触发构建。否则该项目收不到构建请求滴。

pipeline {
  // 该任务运行在哪个Jenkins节点上
  agent any

  // 构建触发器
  triggers {
    GenericTrigger (
      // 构建原因
      causeString: '${Username} submitted the ${Branch} branch of the ${Project_name} project', 
      // 设置变量
      genericVariables: [
        // key => 变量名 
        // value => gitlab请求过来的请求参数
        // value查看gitlab请求过来的JSON内容,注意不能省略 . 号
        [defaultValue: '', key: 'Branch', regexpFilter: '', value: '$.ref'],
        [defaultValue: '', key: 'Project_name', regexpFilter: '', value: '$.project.name'],
        [defaultValue: '', key: 'Username', regexpFilter: '', value: '$.user_name']
      ], 
      // 匹配上述设置的变量,支持正则表达式
      // 如果设置多个参数的话,请用 _ 号分割。
      // 格式:^(待匹配内容值1)_(待匹配内容值2)_(待匹配内容值3)$  
      regexpFilterExpression: '^(refs/heads/.*)_(demo-golang)$', 
      regexpFilterText: '$Branch_$Project_name', 
      // token密钥
      token: '123456', 
    )
  }

  stages {
    stage('pre_exec') {
      steps {
        echo "hello world!"
      }
    }
  }
}

查看gitlab请求Jenkins详细参数

  1. gitlab打开项目 设置 - webhooks 拉到最下面,找到 对应的webhooks - 编辑
    img

  2. 拉到最下面,最近事件 - 查看详细信息

这个没有最近事件,需要发一下测试的请求给Jenkins。截图上有 测试 按钮,但是没有框框出来。

img

  1. 所有的gitlab请求参数
    img
posted @ 2023-02-09 10:02  jiaxzeng  阅读(1147)  评论(0)    收藏  举报