git-golang 半自动布署或者拉取测试分支
1、最近在看gitblit的自动布署方案,都 说要到根目录弄一个XXX文件,本来就对gitblit没有很大的好感,这样一来感觉就更头大了。
2、查看其他的自动布署,无非都是向指定的服务器发一个指令,然后让指定服务器拉取代码,或者做对应的操作。
3、于是想到了提供一个url地址,当需要更新布署的时候访问一下这个地址就能执行对应的操作。
4、运用GO语言,使用gin框架很快搭建起来。使用go cammand的操作来执行对应的XX.sh文件进行处理
5、贴一个关键代码
func(obj *GitCmdController)Webhook(ctx *gin.Context){ checkErr,reString:=tools.CheckTime("webhook") if checkErr!=nil{ vo.OutPut(ctx,reString) }else { command := "./webhook.sh" cmd := exec.Command("/bin/bash", "-c", command) output, err := cmd.Output() if err != nil { vo.OutPut(ctx, err.Error()) } else { vo.OutPut(ctx, string(output)) } } }
定义 一个路由-》检测是不是频繁更新-》执行脚本-》完成任务
6、要点:返回126错误是执行的sh文件的权限加打开chmod +x xxx.sh 在window下的xxx.sh文件要处理为unix文件,否则126还是一直126 ,vi xxx.sh :set ff=unix就可以了
7、这种方式后续还能做更多的扩展。