之前项目因为代码安全方面,在构建方面都是有专人进行维护,自动构建这块都没有进行实际操作,最近项目有涉及到自动开服务等流程,所以就研究了一下。Generic Webhook Trigger这个插件,用来实现自动化构建,传参数到shell脚本,还是很方便的。
Generic Webhook Trigger插件
首先:官方文档
为Jenkins作业添加触发器,便于其他系统调用。(比如在Gitlab里面做个某个动作去触发Jenkins作业去运行,这个插件是通用的,一般不管是gitlab或者其他系统想要触发Jenkins的话那么就使用这个插件)非常灵活,代价就是需要我们去配置。
安装配置Generic WebHook
重启后,进入一个Pipeline项目设置,已经可以选择这个触发器了
可以看到Jenkins的触发地址,调用这个接口就触发了这个作业。
现在每个流水线都开启了webhook,那么怎么确认触发哪个作业呢?
如果A,B两条流水线都开启了,那么想触发A,这个时候可以为其添加token,通过token的值去触发,要是多个项目使用一个token,那么这些流水线都会触发。
这里有三种方式填入token
- Query parameter /invoke?token=TOKEN_HERE 参数
- A token header token: TOKEN_HERE 写入header
- A Authorization: Bearer header Authorization: Bearer TOKEN_HERE 写到认证
上面一句话概括如下:
Jenkins作业配置触发器: 启动Generic Webhook触发器后, 相当于给Jenkins加了一个新的接口(http://JENKINS_URL/generic-webhook-trigger/invoke)。
调用的时候:这里要把 JENKINS_URL 换成自己真实的Jenkins 服务器地址,有端口就加上端口,是域名就写域名。下面是一个参考的URL:
Jenkins作业配置触发器 通过TOKEN触发
Query parameter /invoke?token=TOKEN_HERE 参数
使用插件就生成了这样一个接口,通过这个接口就可以去触发Jenkins
当然,你也可以用证书密钥的方式去生成TOKEN,效果都是一样的。
然后你可以在浏览器,或者是POSTMAN等软件去访问这个接口。
这里只要是TURE说明已经触发成功了。(我这个URL是带了参数,我们后面再详解)
回到JENKINS查看,已经构建结束了。
Jenkins作业配置触发器 加入header触发
也是设置一个key:value
A token header token: TOKEN_HERE 写入header
Jenkins作业配置触发器 认证触发
A Authorization: Bearer header Authorization: Bearer TOKEN_HERE 写到认证
如果要转化为代码的方式,可以使用
#可以看到响应,这样也可以触发jenkins流水线
上面是三种关于触发Jenkins作业的方式
传参数进流水线使流水线调用。
首先配置接收的参数:
回到jenkins->Generic Webhook Trigger插件配置处。
传参规则(Generic Webhook Trigger插件默认接收JSON格式数据):
- 初始接口URL(此时无法触发构建,因为不带TOKEN)
- 第一个参数TOKEN,使用"?"连接
- 第二个参数serverip,在token后使用"&"连接:
- 第三个参数Districtservice,和第二个参数一样使用"&"连接(以此类推):
除了TOKEN必须在第一个,后面的参数只要名称一至,可以不分先后。比如
都是可以的,只是顺序不一样。
进行测试:
在Generic Webhook Trigger插件配置处可以打印传入的参数。
在jenkins构建处查看:
在流水线里面直接调用传入的参数:
效果:
后续可以直接将参数传入到自己的SHELL脚本等……如:
后续
传参也可以传入列表,等多种类型,大家可以去研究一下。
评论区