gitea和golang組合實現hook自動化部署代碼
背景
目前git代碼倉庫develop分支的代碼要常常更新到測試服務器,使用傳統的FTP上傳代碼太費力,使用git pull手動拉取分支,也不夠放心。如今使用git中的hook來進行自動化部署代碼。git
思路
git服務&hook配置
git服務使用的是gitea。其中的hook配置以下
ps:沒用gitlab實在是由於它內存佔用太大github
golang gin實現的web服務
用到兩個核心類庫golang
- go-sh 執行Linux命令使用go-sh
- go-simplejson 快速獲取json中的數據go-simplejson
核心代碼賞析
res := c.Request.Body fmt.Println("hook結果", res) bodydata, err := ioutil.ReadAll(res) if err != nil { fmt.Println(err) } j, err := simplejson.NewJson(bodydata) if err != nil { fmt.Printf("err", err) } repository, err := j.Get("repository").Get("full_name").String() if err != nil { fmt.Printf("err", err) } fmt.Println("識別到的倉庫是", repository) clone_url, err := j.Get("repository").Get("clone_url").String() if err != nil { fmt.Printf("err", err) } fmt.Println("識別到的clone_url是", clone_url)