修改cid运行使用队列,修改运行日志获取

This commit is contained in:
junleea 2026-04-07 19:54:34 +08:00
parent 4cbb9b1201
commit e4e12324fe
2 changed files with 49 additions and 12 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Ask2AgentMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

View File

@ -10,6 +10,7 @@ import (
"os/exec"
"strconv"
"strings"
"sync"
"time"
"videoplayer/dao"
"videoplayer/proto"
@ -17,6 +18,19 @@ import (
"videoplayer/worker"
)
type CIDTask struct {
Name string
Url string
Script string
ID int
AuthID int
}
var (
cidTaskQueue = make(chan CIDTask, 100)
cidQueueOnce sync.Once
)
type CIDCreateReq struct {
Name string `json:"name" form:"name"`
Url string `json:"url" form:"url"`
@ -48,7 +62,18 @@ type CIDUpdateReq struct {
// 全局变量记录是否进行cron定时任务的刷新
var cron_count int
func initCIDTaskQueue() {
cidQueueOnce.Do(func() {
go func() {
for task := range cidTaskQueue {
RunShellCID(task.Name, task.Url, task.Script, task.ID, task.AuthID)
}
}()
})
}
func SetUpCIDGroup(router *gin.Engine) {
initCIDTaskQueue()
cidGroup := router.Group("/cid") //持续集成、部署
cidGroup.POST("/create", CreateCID)
cidGroup.POST("/delete", DeleteCID)
@ -100,7 +125,13 @@ func RunCID(c *gin.Context) {
c.JSON(200, gin.H{"error": "CID not found", "code": proto.OperationFailed, "message": "failed"})
return
} else {
go RunShellCID(cid.Name, cid.Url, cid.Script, req.ID, authID)
cidTaskQueue &lt;- CIDTask{
Name: cid.Name,
Url: cid.Url,
Script: cid.Script,
ID: req.ID,
AuthID: authID,
}
c.JSON(200, gin.H{"code": proto.SuccessCode, "message": "success", "data": "success"})
}
} else {
@ -237,7 +268,13 @@ func CIDCallback(c *gin.Context) {
return
}
if res.ID != 0 {
go RunShellCID(res.Name, res.Url, res.Script, int(res.ID), res.Auth_id)
cidTaskQueue &lt;- CIDTask{
Name: res.Name,
Url: res.Url,
Script: res.Script,
ID: int(res.ID),
AuthID: res.Auth_id,
}
resp.Code, resp.Message, resp.Data = proto.SuccessCode, "success", res.Name
c.JSON(http.StatusOK, resp)
return
@ -261,17 +298,14 @@ echo "end"`
start := time.Now()
//执行脚本
cmd := exec.Command("/bin/bash", "-c", scriptContent)
// 使用bytes.Buffer捕获输出
var out bytes.Buffer
cmd.Stdout = &out
err3 := cmd.Run()
output, err3 := cmd.CombinedOutput()
err3_info := ""
if err3 != nil {
err3_info = err3.Error()
}
elapsed := time.Since(start)
//fmt.Println("bash content:", scriptContent)
dao.CreateRunLog(id, authID, scriptContent, out.String(), err3_info, elapsed.Seconds()) //添加执行日志
dao.CreateRunLog(id, authID, scriptContent, string(output), err3_info, elapsed.Seconds()) //添加执行日志
}
func RunShellCID(cid_name, url, script string, id, authID int) {
@ -300,10 +334,7 @@ echo "end"`
start := time.Now()
//执行脚本
cmd := exec.Command("/bin/bash", "-c", scriptContent)
// 使用bytes.Buffer捕获输出
var out bytes.Buffer
cmd.Stdout = &out
err3 := cmd.Run()
output, err3 := cmd.CombinedOutput()
err3_info := ""
if err3 != nil {
err3_info = err3.Error()
@ -314,7 +345,7 @@ echo "end"`
}
elapsed := time.Since(start)
//fmt.Println("bash content:", scriptContent)
dao.CreateRunLog(id, authID, scriptContent, out.String(), err3_info, elapsed.Seconds()) //添加执行日志
dao.CreateRunLog(id, authID, scriptContent, string(output), err3_info, elapsed.Seconds()) //添加执行日志
if err3 != nil {
dao.UpdateLastFailByID(id, time.Now())
} else {