最近写了一个小工具, 用来接收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" // 推送事件执行的脚本 } } }