最近寫了一個小工具, 用來接收github webhook消息, 以在服務器上自動執行腳本git
gaopengfei123123/hookgithub
一個用來接收webhook的servergolang
golang v1.11+ (由於用到了go mod)web
執行:json
go get -u github.com/gaopengfei123123/hook
建立文件 main.go
bash
package main import ( "github.com/gaopengfei123123/hook" ) func main() { hook.Execute() }
執行命令服務器
go build -o app main.go
app
這個二進制文件就是本體了, 放到合適的地方, 執行:app
./app start -d
後臺啓動, app 同目錄下會建立 scripts
, logs
兩個目錄, 和一個 hook.pid
保存pid框架
檢測是否啓動:curl
[root@xxx]# curl localhost:8080/ping {"message":"pong v5"}
說明服務已經啓動成功, 服務地址爲0.0.0.0:8080
0.0.0.0:8080/ping
檢測接口0.0.0.0:8080/push
接受github webhook請求, 根據 Repository.Name 去判斷執行什麼腳本reload 從新加載日誌, 以及平滑重啓 start 啓動命令, -d 後臺運行 stop 終止命令 version 程序版本
{ "github_hook": { // 以請求消息中的 repository.name 字段來作key "secret": "xxxxxx", // 若是設置了secret則會用這個進行驗證, 爲空則不驗證 "script_path": "", // 腳本所在絕對目錄, 爲空就是當前的script目錄 "event": { "push": "test" // 推送事件執行的腳本 } } }