github-webhook 小工具

最近寫了一個小工具, 用來接收github webhook消息, 以在服務器上自動執行腳本git

gaopengfei123123/hookgithub

github hook server

一個用來接收webhook的servergolang

環境

golang v1.11+ (由於用到了go mod)web

安裝

執行:json

go get -u github.com/gaopengfei123123/hook

建立文件 main.gobash

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     程序版本

目錄功能:

  • logs 存放請求日誌
  • scripts 存放hook腳本, 當有對應庫名的請求進來, 將執行配置好的腳本
  • hook.pid 存放進程pid

配置文件

{
    "github_hook": {        // 以請求消息中的 repository.name 字段來作key
        "secret": "xxxxxx", // 若是設置了secret則會用這個進行驗證, 爲空則不驗證
        "script_path": "",  // 腳本所在絕對目錄, 爲空就是當前的script目錄
        "event": {
            "push": "test"  // 推送事件執行的腳本
        }
    }
}

特性

  • 一鍵初始化
  • 平滑重啓, 信號通訊
  • 支持secret驗證
  • 異步執行腳本
  • 規避重放
  • 腳本傳遞參數(TODO)
  • 事件鉤子(TODO)

依賴組件

github地址

gaopengfei123123/hook

相關文章
相關標籤/搜索