欢迎访问www.showerlee.com, 您的支持就是我前进的动力.

Jenkins构建github webhook

showerlee 2020-10-19 12:06 DevTools, Jenkins 阅读 (6,030) 抢沙发

如何构建Jenkins github webhook, 这个一直在网上没有一个非常系统的解决方案, 官方给的文档也相对比较晦涩

刚好最近闲下来想在把之前的CICD项目搞的更加完备, 这里就结合这块顺带把Jenkins github webhook给大家整理一个文档, 帮助有需求的小伙伴针对如何使用Jenkins插件仓库下的github plugin与我们常用的github代码进行webhook集成.

DEMO: https://github.com/showerlee/gradle-demo-with-docker

什么是Github Webhook?

顾名思义, 也就是Github项目下Webhook允许使用者触发一个CI系统(例如Jenkins)的URL,这个URL通常由github plugin提供,这个Webhook会侦听特定事件,如推送master push, PR或merge请求。如果项目推送了新代码,  Github会向这个Webhook URL发送包含此次commit的相关POST请求, 并通过Jenkins相关配置触发相应的jenkins job, 实现我们每次的代码提交都能够自动触发一次Jenkins代码构建, 真正打通了我们代码仓库与CI系统的壁垒, 使我们开发人员能够快速进行CICD自动化集成构建部署, 并且在后期的审计过程中, 能够通过每次commit追溯每一次构建内容. 实现commit与构建一一对应.


这里开始我们的具体配置:


1.在Github下添加Jenkins github plungin webhook URL

访问你的代码仓库如下路径

https://github.com/<org>/<repo>/settings/hooks/

点击右上角的Add webhook


按照如图添加我们的Jenkins URL地址, 假设你的Jenkins主页是jenkins.example.com, 这里URL即为如下地址(如有非80端口, 这里也要添加)

这里需要保证jenkins.example.com为可以访问的公网域名且对应的IP地址可公网解析.

本地虚拟机用户不适合此次webhook的教程, 因为github需要与你的jenkins主机通信, 这里本地虚拟机通常都在一个内网, 无法实现公网互通


配置好点击Add webhook保存

2.在Github下创建Personal access token

访问你的代码仓库如下路径

https://github.com/settings/tokens

按照如图配置你的token, 创建好后保存token内容


3. 安装配置Jenkins github plugin

访问http://jenkins.example.com/pluginManager/available 找到github plugin, 并进行安装.


进入http://jenkins.example.com/configure

找到github plugin区域, 按照如图进行配置

这里需要在Credentials下添加之前创建的Personal access token作为我们Github项目向Jenkins webhook URL发送POST请求的凭证.

点击Test connection确认连接正常

点击左下角Save保存Github配置


4.激活Jenkins job使用该插件触发webhook

这里我进入我的一个jenkins pipeline item, 按照如图激活github webhook.

这样子我们就成功的配置了Github到Jenkins的webhook.

这里我提供一个demo项目, 大家可以参考这个项目进行此次的配置.

https://github.com/showerlee/gradle-demo-with-docker

正文部分到此结束
版权声明:除非注明,本文由(showerlee)原创,转载请保留文章出处!
本文链接:http://www.showerlee.com/archives/2893

继续浏览:jenkins webhook

还没有评论,快来抢沙发!

发表评论

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif