修改cid运行使用队列,修改运行日志获取
This commit is contained in:
parent
4cbb9b1201
commit
e4e12324fe
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Ask2AgentMigrationStateService">
|
||||||
|
<option name="migrationStatus" value="COMPLETED" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
"videoplayer/dao"
|
"videoplayer/dao"
|
||||||
"videoplayer/proto"
|
"videoplayer/proto"
|
||||||
|
|
@ -17,6 +18,19 @@ import (
|
||||||
"videoplayer/worker"
|
"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 {
|
type CIDCreateReq struct {
|
||||||
Name string `json:"name" form:"name"`
|
Name string `json:"name" form:"name"`
|
||||||
Url string `json:"url" form:"url"`
|
Url string `json:"url" form:"url"`
|
||||||
|
|
@ -48,7 +62,18 @@ type CIDUpdateReq struct {
|
||||||
// 全局变量,记录是否进行cron定时任务的刷新
|
// 全局变量,记录是否进行cron定时任务的刷新
|
||||||
var cron_count int
|
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) {
|
func SetUpCIDGroup(router *gin.Engine) {
|
||||||
|
initCIDTaskQueue()
|
||||||
cidGroup := router.Group("/cid") //持续集成、部署
|
cidGroup := router.Group("/cid") //持续集成、部署
|
||||||
cidGroup.POST("/create", CreateCID)
|
cidGroup.POST("/create", CreateCID)
|
||||||
cidGroup.POST("/delete", DeleteCID)
|
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"})
|
c.JSON(200, gin.H{"error": "CID not found", "code": proto.OperationFailed, "message": "failed"})
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
go RunShellCID(cid.Name, cid.Url, cid.Script, req.ID, authID)
|
cidTaskQueue <- 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"})
|
c.JSON(200, gin.H{"code": proto.SuccessCode, "message": "success", "data": "success"})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -237,7 +268,13 @@ func CIDCallback(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if res.ID != 0 {
|
if res.ID != 0 {
|
||||||
go RunShellCID(res.Name, res.Url, res.Script, int(res.ID), res.Auth_id)
|
cidTaskQueue <- 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
|
resp.Code, resp.Message, resp.Data = proto.SuccessCode, "success", res.Name
|
||||||
c.JSON(http.StatusOK, resp)
|
c.JSON(http.StatusOK, resp)
|
||||||
return
|
return
|
||||||
|
|
@ -261,17 +298,14 @@ echo "end"`
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
//执行脚本
|
//执行脚本
|
||||||
cmd := exec.Command("/bin/bash", "-c", scriptContent)
|
cmd := exec.Command("/bin/bash", "-c", scriptContent)
|
||||||
// 使用bytes.Buffer捕获输出
|
output, err3 := cmd.CombinedOutput()
|
||||||
var out bytes.Buffer
|
|
||||||
cmd.Stdout = &out
|
|
||||||
err3 := cmd.Run()
|
|
||||||
err3_info := ""
|
err3_info := ""
|
||||||
if err3 != nil {
|
if err3 != nil {
|
||||||
err3_info = err3.Error()
|
err3_info = err3.Error()
|
||||||
}
|
}
|
||||||
elapsed := time.Since(start)
|
elapsed := time.Since(start)
|
||||||
//fmt.Println("bash content:", scriptContent)
|
//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) {
|
func RunShellCID(cid_name, url, script string, id, authID int) {
|
||||||
|
|
@ -300,10 +334,7 @@ echo "end"`
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
//执行脚本
|
//执行脚本
|
||||||
cmd := exec.Command("/bin/bash", "-c", scriptContent)
|
cmd := exec.Command("/bin/bash", "-c", scriptContent)
|
||||||
// 使用bytes.Buffer捕获输出
|
output, err3 := cmd.CombinedOutput()
|
||||||
var out bytes.Buffer
|
|
||||||
cmd.Stdout = &out
|
|
||||||
err3 := cmd.Run()
|
|
||||||
err3_info := ""
|
err3_info := ""
|
||||||
if err3 != nil {
|
if err3 != nil {
|
||||||
err3_info = err3.Error()
|
err3_info = err3.Error()
|
||||||
|
|
@ -314,7 +345,7 @@ echo "end"`
|
||||||
}
|
}
|
||||||
elapsed := time.Since(start)
|
elapsed := time.Since(start)
|
||||||
//fmt.Println("bash content:", scriptContent)
|
//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 {
|
if err3 != nil {
|
||||||
dao.UpdateLastFailByID(id, time.Now())
|
dao.UpdateLastFailByID(id, time.Now())
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue