使用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。



總結
實現了同步代碼更新自動化執行構建項目的功能,實現了將本地端口暴露在公網的能力。
在實際的項目當中實際上需要在一個大的源項目當中指定一部分的代碼變更對應項目執行,后續有機會再探索。
另外將本地端口暴露在公網是調試時所作的事情,實際項目當中會有云服務器這些工具來代替。

浙公網安備 33010602011771號