使用webhook在github代码更新时构建目标工程

确定目标

大的背景是作为一个软件行业的测试工作人员。搭建使用实际项目可用好用的接口自动化测试框架是最终目标。大的目标是由很多的小目标组成的。我在这之前整体搭建了一个接口自动化测试框架,实现了大部分单接口用例和小部分场景化用例的自动化。在这个基础上想要实现一个功能:那就是在测试对象代码被更新时自动触发执行自动化测试代码工程。这样可以最大程度地实现接口自动化地实时覆盖。代码目前是存放在github和gitee上面的,由此我们开始思考如何实现

实现

webhook的实现其实在网上是有比较详细的介绍的。我本身也是通过豆包搜索一步一步进行实现的。今天写这个的主要原因是想加深一下自身对于实现过程的记忆,另外对webhook的实现原理和实际使用场景做更深的理解
webhook本身是采用http协议的,源应用在某个动作触发时向目标地址发送一个hook请求。目标应用再通过请求的内容来进行实际工程的构建。首先你需要一个源应用,这里一般是指存放在远程仓库的代码。再或者可以自己专门实现一个源应用程序。另外要有个目标地址(应用)。这里实际例子是jenkins的webhook地址,这个地址必须是可以被公网访问的地址。我会在文章最后描述一下如何将本地的接口暴露在公网。
首先需要对源应用进行创建,再是在源应用上创建webhook。具体如下图

在github平台上进行webhook的创建,根据路径点击add webhook后填入预期参数

着重需要对参数进行说明
Payload URL:需要填写目标应用的公网地址。 格式为公网url+自定义标识(举例:https://b688-124-90-93-60.ngrok-free.app/github-webhook/
Content type:一般使用application/json
Secret:密码(可设可不设)
其他按实际项目需求进行设置。
创建之后可以ping一下,返回200代表网络是通的
而后需要在cicd工具当中配置构建对应的项目,例如jenkins
创建项目后配置



重点是勾选
上述两步完成之后,我们对源应用进行代码的修改更新push,再观察jenkins构建的项目状态。

我们可以看到项目被触发构建了。我们再观察一下github中webhook的记录

一次根据远程仓库代码更新触发执行目标项目的能力就实现了。
这里需要提一嘴的是如何将本地的服务暴露在公网之上。这里采用了ngrok工具。
首先进入ngrok官网https://ngrok.com/,下载对应系统的app压缩包。我用的是mac所以下载mac版的

下载好之后,将压缩包在终端解压。再添加ngrok账号所对应的authtoken。最后将本地网址即端口映射到公网上。最后在ngrok中的Endpoints查看公网ip。


总结

实现了同步代码更新自动化执行构建项目的功能,实现了将本地端口暴露在公网的能力。
在实际的项目当中实际上需要在一个大的源项目当中指定一部分的代码变更对应项目执行,后续有机会再探索。
另外将本地端口暴露在公网是调试时所作的事情,实际项目当中会有云服务器这些工具来代替。

posted @ 2025-05-23 12:11  莫西无邪  阅读(42)  评论(0)    收藏  举报