修改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"
|
||||
"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 <- 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 <- 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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue