gitea和golang组合实现hook自动化部署代码

背景

目前git代码仓库develop分支的代码要常常更新到测试服务器,使用传统的FTP上传代码太费力,使用git pull手动拉取分支,也不够放心。如今使用git中的hook来进行自动化部署代码。git

思路

hook 代码的思路

git服务&hook配置

git服务使用的是gitea。其中的hook配置以下
imageimage
ps:没用gitlab实在是由于它内存占用太大github

golang gin实现的web服务

用到两个核心类库golang

核心代码赏析

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)