Generic Webhook Trigger 实现特定提交触发自动构建

Generic Webhook Trigger 实现特定提交触发自动构建

Jenkins与Gitlab联动可以通过webhook的方式来完成,gitlab上自带的webhooks
在这里插入图片描述
看似触发方式这么多,能够满足自身需求的却不多。因此需要借助Jenkins的Generic Webhook Trigger简称GWT插件来对webhook进行扩展。
首先需要在Jenkins中安装Generic Webhook Trigger安装完成之后在构建触发器选择中就会多出GWT的选项在这里插入图片描述
勾选上GWT的选项之后找到Token选项
在这里插入图片描述
根据提示可知,这里还是和Jenkins自带的Build when a chanage is pushed to GitLab相同的原理,不同点是GWT的token没有自动生成功能。其实还有很多高度定制话的东西,这里不讲他太多,后面jenkinsfile的时候再来说明,更容易理解。

Pipeline
将Jenkinsfile通过gitlab进行管理是,配置大致如下:
在这里插入图片描述
重头Jenkinsfile如下:
参考:https://plugins.jenkins.io/generic-webhook-trigger/
在这里插入图片描述
在处理以上业务的时候发现了pipeline还有一个gitlabCommitStatus方法可以将构建步骤状态发回到gitlab是的pipeline中。具体参看:https://www.jenkins.io/doc/pipeline/steps/gitlab-plugin/
实现效果如下:
Jenkins中:
在这里插入图片描述
GitLab中
在这里插入图片描述
而且点击gitlab中的步骤状态还会跳转到Jenkins的BlueOcean界面,可以说相当nice!!

实现这一过程中不幸踩中gitlab-plugin的坑——状态信息不能发送到gitlab中,
Jenkins日志信息:
在这里插入图片描述

被坑2天最后发现是由于:构建步骤中使用了多个gitlab代码仓库,导致 gitlabCommitStatus无法获取到有效的目标仓库。Jenkins把报错日志见上图👆,下图是pipeline关键代码👇
在这里插入图片描述
根据截图可以看出不管你是使用jenkins的git插件还是checkout都会导致图上的描述的结果,出处:https://github.com/jenkinsci/gitlab-plugin/issues/899
为了满足需求就需要绕开以上获取依赖代码的方式:最后发现使用Jenkins的sshagent插件包裹shell命令可以完美避开以上问题:
在这里插入图片描述
参考:

《Jenkins 2.x实践指南》读书笔记
gitlab-plugin多仓库gitlabCommitStatus问题
https://plugins.jenkins.io/generic-webhook-trigger/
Jenkins2-学习系列9----Generic-Webhook-Trigger-插件详讲
https://xie.infoq.cn/article/600f642fcb26f0c280a7acf59

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值