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)