上一篇文章在Jenkins中构建了一个流水线任务,能正常的自动拉取代码然后打包发布了,可是还需要手动去点击构建,这当然不是我想要的,我需要的是在代码提交到GitHub的Master分支后Jenkins就能自动开始发布流程。
还记得上一篇文章中配置流水线语法那个地方吗:
接下来我们就继续去配置如何让GitHub自动触发Jenkins:
只需两步,先在GitHub上配置一个设置项,然后在Jenkins中配置一个设置项。
1.登录到GitHub,在我的源代码项目中找到如下图所示:
http://xxx.xxx.xxx.xxx:8000/github-webhook/
该地址就是Jenkins的访问地址,后面跟的“github-webhook”是什么意思现在我还没搞懂,暂且理解为不同源代码管理会跟一个不同的参数吧。
2.在Jenkins中开起轮询来监听GitHub的请求
进入我们之前构建的流水线任务,然后入下图点击配置:
此时就完成了。
然后就可以去编辑一下源代码代码,然后提交到master分支上,看是否能正常触发,当然触发有一定的延迟,我的几十秒就开始动起来了。
如果需要检查GitHub是否有正常去访问Jenkins,在GitHub的webhooks上面可以查看记录:
如果这里正常,但是Jenkins上却没有反映,说实话我实践的时候还没遇到,但是也许实践过程中会遇到,那么先多提交几次代码试试,或者检查各个配置是否正确。
最后分享一点心得:
1.我用的是GitHub,其他源代码管理应该也是会有这个类似的功能的。
2.也许是我服务器配置太差,容器启的太多,2核4G的内存,8M宽带,启动了的容器有8个,最终在Jenkins自动发布时当机过两次。
3.Jenkins自动发布时无缘无故失败也有好几次,只需要重新提交代码让他自动构建,或者手动去点击自动构建多试两次又能成功,感觉不稳定。
4.在我的这一套Jenkins自动发布下,Jenkins在操作的时候不知道为什么会给我自动启动一个容器,好像是Docker打包镜像时自动启的测试容器,在完成后会自动删除,但是我几次当机后这个容器没能自动删除,只能我手动去删除了。当机我怀疑是Docker打包镜像时占用资源多,我这个服务器启动太多容器了负荷不起。