jenkins+webhook区分多项目多环境

我的方法是项目区分带在webhook url,环境区分是通过分支名做管理

    • jenkins插件安装
    • 获取jenkins的webhook url
      • api token
      • url
    • 配置git仓库的webhook
    • 配置jenkins项目
      • 插件变量解析介绍
      • 项目变量
      • 环境变量
      • 添加filter
    • 参考资料

jenkins插件安装

到jenkins的插件管理页面,安装Generic Webhook Trigger插件

获取jenkins的webhook url

api token

到jenkins的管理用户页面,找到你要设置的用户,找到API Token一项,获得User IDAPI Token

url

jenkins的webhook地址的拼接方式如下

http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke

配置git仓库的webhook

我这边用的是码云,在代码库的setting->webhook就可以添加一个webhook

有三个需要填的信息

  • url填入上面得到的url
  • 选择push方法
  • password是你所用的jenkins用户的密码

其中url要带上项目信息,所以url应该是

http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke?project=项目名

配置jenkins项目

插件变量解析介绍

去到jenkins的items的configure页面,找到Build Triggers,选择Generic Webhook Trigger

因为webhook其实是一个网络请求,所以插件支持三种变量,分别是

  • post带过来的body参数
  • header参数
  • 放在url后的request参数

项目变量

project已经放在request参数里面了,所以在Build Triggers添加一个Request parameters,填入

  • Request parameter中填入project,对应url的参数

环境变量

环境变量通过码云默认传过来的body中存在的ref字段,具体码云Webhook传过来的body可以看这个链接,不同的代码库大同小异

所以这里新增一个Post content parameters

  • Variable填入ref
  • Expression填入$.ref,这里$代表整个body,.是json里层数据的获取
  • 选择JSONPath方式

添加filter

变量获取了之后,就需要用filter获得符合条件的Webhook触发部署

现在配置Optional filter,这里是多个变量,用空格隔开

  • Expression填入^(refs/heads/git分支名称) (项目名)$
  • Text填入$ref $project

到这里,就可以debug了,更新代码就会触发webhook自动构建Jenkins的项目了!

参考资料

  • 使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成
  • jenkins在git上的文档
  • 码云的webhook说明文档

你可能感兴趣的:(基础服务,经验分享)