feat: 为QQ机器人添加Git仓库管理接口
新增了Git仓库管理相关功能: 1. 在router中添加/git路由组 2. 新增代码拉取、构建和重启的HTTP接口 3. 将Git拉取逻辑抽取到util包中 4. 支持通过HTTP请求触发代码拉取、构建和重启操作 5. 扩展CORS配置,允许git.lxtend.com域名访问
This commit is contained in:
parent
8049ec7946
commit
cfd20cbefe
@ -3,6 +3,7 @@ package restart
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"time"
|
||||
@ -11,6 +12,8 @@ import (
|
||||
"git.lxtend.com/qqbot/handler"
|
||||
"git.lxtend.com/qqbot/model"
|
||||
docker "git.lxtend.com/qqbot/service/exec"
|
||||
"git.lxtend.com/qqbot/util"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var hasVaildBuild = true
|
||||
@ -94,7 +97,7 @@ func buildAndRestart(msg model.Message) model.Reply {
|
||||
}
|
||||
|
||||
func pullCode(msg model.Message) model.Reply {
|
||||
err := gitPull()
|
||||
err := util.GitPull()
|
||||
if err != nil {
|
||||
return model.Reply{
|
||||
ReplyMsg: "拉取代码失败,报错如下\n" + err.Error(),
|
||||
@ -164,17 +167,26 @@ func buildBot() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func gitPull() error {
|
||||
workDir, err := os.Getwd()
|
||||
func PullCodeHandler(c *gin.Context) {
|
||||
err := util.GitPull()
|
||||
if err != nil {
|
||||
return err
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
}
|
||||
cmd := exec.Command("git", "pull")
|
||||
cmd.Dir = workDir
|
||||
|
||||
output, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return errors.New(string(output) + err.Error())
|
||||
}
|
||||
return nil
|
||||
c.JSON(http.StatusOK, gin.H{"message": "拉取代码成功"})
|
||||
}
|
||||
|
||||
func BuildBotHandler(c *gin.Context) {
|
||||
err := buildBot()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"message": "构建成功"})
|
||||
}
|
||||
|
||||
func RestartBotHandler(c *gin.Context) {
|
||||
err := restartProgram()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"message": "重启成功"})
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.lxtend.com/qqbot/handler/restart"
|
||||
"git.lxtend.com/qqbot/handler/ticket"
|
||||
"git.lxtend.com/qqbot/health"
|
||||
"github.com/gin-contrib/cors"
|
||||
@ -12,7 +13,7 @@ import (
|
||||
func startRouter() {
|
||||
ginServer := gin.New()
|
||||
ginServer.Use(cors.New(cors.Config{
|
||||
AllowOrigins: []string{"https://www.lxtend.com"},
|
||||
AllowOrigins: []string{"https://www.lxtend.com", "https://git.lxtend.com"},
|
||||
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
|
||||
AllowHeaders: []string{"Origin", "Content-Type", "Accept", "Authorization", "X-CSRF-Token"},
|
||||
ExposeHeaders: []string{"Content-Length", "X-CSRF-Token"},
|
||||
@ -23,5 +24,9 @@ func startRouter() {
|
||||
healthEngine.GET("/ping", health.HealthHandler)
|
||||
ticketEngine := ginServer.Group("/ticket")
|
||||
ticketEngine.GET("", ticket.TicketHandler)
|
||||
gitEngine := ginServer.Group("/git")
|
||||
gitEngine.GET("/pull", restart.PullCodeHandler)
|
||||
gitEngine.GET("/build", restart.BuildBotHandler)
|
||||
gitEngine.GET("/restart", restart.RestartBotHandler)
|
||||
go ginServer.Run(":3434")
|
||||
}
|
||||
|
22
util/automatic.go
Normal file
22
util/automatic.go
Normal file
@ -0,0 +1,22 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
func GitPull() error {
|
||||
workDir, err := os.Getwd()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cmd := exec.Command("git", "pull")
|
||||
cmd.Dir = workDir
|
||||
|
||||
output, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return errors.New(string(output) + err.Error())
|
||||
}
|
||||
return nil
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user