Compare commits
8 Commits
69a25507e8
...
fd71cc85c4
| Author | SHA1 | Date |
|---|---|---|
|
|
fd71cc85c4 | |
|
|
edf94cbca9 | |
|
|
baae696b56 | |
|
|
c3c4668c26 | |
|
|
d0e9e34a65 | |
|
|
daa799dfb5 | |
|
|
cf3985321d | |
|
|
e1e2dc5037 |
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
echo "Building the project"
|
||||||
|
cd /home/videoplayer
|
||||||
|
git pull
|
||||||
|
pwd
|
||||||
|
/home/lijun/go/bin/go build
|
||||||
|
echo "Build complete"
|
||||||
|
|
@ -18,6 +18,7 @@ type CIDRunLog struct {
|
||||||
gorm.Model
|
gorm.Model
|
||||||
CID_id int `gorm:"column:cid_id"`
|
CID_id int `gorm:"column:cid_id"`
|
||||||
Auth_id int `form:"column:auth_id"`
|
Auth_id int `form:"column:auth_id"`
|
||||||
|
Script string `gorm:"column:script"`
|
||||||
Log string `gorm:"column:log"`
|
Log string `gorm:"column:log"`
|
||||||
Error string `gorm:"column:error"`
|
Error string `gorm:"column:error"`
|
||||||
}
|
}
|
||||||
|
|
@ -73,8 +74,8 @@ func UpdateCIDByID(id, auth_id int, name, url, script, token string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateRunLog,添加执行日志
|
// CreateRunLog,添加执行日志
|
||||||
func CreateRunLog(cid_id, auth_id int, log, err string) uint {
|
func CreateRunLog(cid_id, auth_id int, script, log, err string) uint {
|
||||||
cidRunLog := CIDRunLog{CID_id: cid_id, Auth_id: auth_id, Log: log, Error: err}
|
cidRunLog := CIDRunLog{CID_id: cid_id, Auth_id: auth_id, Log: log, Error: err, Script: script}
|
||||||
result := DB.Debug().Create(&cidRunLog)
|
result := DB.Debug().Create(&cidRunLog)
|
||||||
if result != nil {
|
if result != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
|
|
@ -85,7 +86,7 @@ func CreateRunLog(cid_id, auth_id int, log, err string) uint {
|
||||||
|
|
||||||
func FindRunLogByAuthID(auth_id int) []CIDRunLog {
|
func FindRunLogByAuthID(auth_id int) []CIDRunLog {
|
||||||
var cidRunLogs []CIDRunLog
|
var cidRunLogs []CIDRunLog
|
||||||
DB.Debug().Where(" auth_id = ?", auth_id).Find(&cidRunLogs).Order("created_at desc")
|
DB.Debug().Where(" auth_id = ?", auth_id).Order("created_at desc").Find(&cidRunLogs)
|
||||||
return cidRunLogs
|
return cidRunLogs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"regexp"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"videoplayer/dao"
|
"videoplayer/dao"
|
||||||
"videoplayer/proto"
|
"videoplayer/proto"
|
||||||
)
|
)
|
||||||
|
|
@ -55,9 +55,12 @@ 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 {
|
||||||
re := regexp.MustCompile(`(?i)(?:https?://|git@)[^/]+/([^/]+)/([^/]+)(?:\.git)?$`)
|
strs := strings.Split(cid.Url, "/")
|
||||||
matches := re.FindStringSubmatch(cid.Url)
|
name := strs[len(strs)-1]
|
||||||
name := matches[2]
|
names := strings.Split(name, ".")
|
||||||
|
name = names[0]
|
||||||
|
|
||||||
|
//脚本内容
|
||||||
scriptContent := `#!/bin/bash
|
scriptContent := `#!/bin/bash
|
||||||
TARGET_DIR = ` + proto.CID_BASE_DIR + `/workspace` + name + `
|
TARGET_DIR = ` + proto.CID_BASE_DIR + `/workspace` + name + `
|
||||||
if [ ! -d $TARGET_DIR ]; then
|
if [ ! -d $TARGET_DIR ]; then
|
||||||
|
|
@ -71,11 +74,15 @@ func RunCID(c *gin.Context) {
|
||||||
//执行脚本
|
//执行脚本
|
||||||
cmd := exec.Command("/bin/bash", "-c", scriptContent)
|
cmd := exec.Command("/bin/bash", "-c", scriptContent)
|
||||||
err3 := cmd.Run()
|
err3 := cmd.Run()
|
||||||
|
err3_info := ""
|
||||||
|
if err3 != nil {
|
||||||
|
err3_info = err3.Error()
|
||||||
|
}
|
||||||
fmt.Println("bash content:", scriptContent)
|
fmt.Println("bash content:", scriptContent)
|
||||||
// 使用bytes.Buffer捕获输出
|
// 使用bytes.Buffer捕获输出
|
||||||
var out bytes.Buffer
|
var out bytes.Buffer
|
||||||
cmd.Stdout = &out
|
cmd.Stdout = &out
|
||||||
dao.CreateRunLog(req.ID, authID, out.String(), err3.Error()) //添加执行日志
|
dao.CreateRunLog(req.ID, authID, scriptContent, out.String(), err3_info) //添加执行日志
|
||||||
c.JSON(200, gin.H{"code": proto.SuccessCode, "message": "success", "data": "success"})
|
c.JSON(200, gin.H{"code": proto.SuccessCode, "message": "success", "data": "success"})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -182,9 +189,10 @@ func CIDCallback(c *gin.Context) {
|
||||||
res := dao.FindCIDByIDAndToken(cid, token)
|
res := dao.FindCIDByIDAndToken(cid, token)
|
||||||
if res.ID != 0 {
|
if res.ID != 0 {
|
||||||
//从url获取仓库名称
|
//从url获取仓库名称
|
||||||
re := regexp.MustCompile(`(?i)(?:https?://|git@)[^/]+/([^/]+)/([^/]+)(?:\.git)?$`)
|
strs := strings.Split(res.Url, "/")
|
||||||
matches := re.FindStringSubmatch(res.Url)
|
name := strs[len(strs)-1]
|
||||||
name := matches[2]
|
names := strings.Split(name, ".")
|
||||||
|
name = names[0]
|
||||||
scriptContent := `#!/bin/bash
|
scriptContent := `#!/bin/bash
|
||||||
TARGET_DIR = ` + proto.CID_BASE_DIR + `/workspace` + name + `
|
TARGET_DIR = ` + proto.CID_BASE_DIR + `/workspace` + name + `
|
||||||
if [ ! -d $TARGET_DIR ]; then
|
if [ ! -d $TARGET_DIR ]; then
|
||||||
|
|
@ -198,10 +206,14 @@ func CIDCallback(c *gin.Context) {
|
||||||
//执行脚本
|
//执行脚本
|
||||||
cmd := exec.Command("/bin/bash", "-c", scriptContent)
|
cmd := exec.Command("/bin/bash", "-c", scriptContent)
|
||||||
err3 := cmd.Run()
|
err3 := cmd.Run()
|
||||||
|
err3_info := ""
|
||||||
|
if err3 != nil {
|
||||||
|
err3_info = err3.Error()
|
||||||
|
}
|
||||||
// 使用bytes.Buffer捕获输出
|
// 使用bytes.Buffer捕获输出
|
||||||
var out bytes.Buffer
|
var out bytes.Buffer
|
||||||
cmd.Stdout = &out
|
cmd.Stdout = &out
|
||||||
dao.CreateRunLog(cid, res.Auth_id, out.String(), err3.Error()) //添加执行日志
|
dao.CreateRunLog(cid, res.Auth_id, scriptContent, out.String(), err3_info) //添加执行日志
|
||||||
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 {
|
||||||
c.JSON(200, gin.H{"error": "CID not found by id and token", "code": proto.OperationFailed, "message": "failed"})
|
c.JSON(200, gin.H{"error": "CID not found by id and token", "code": proto.OperationFailed, "message": "failed"})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue