Browse Source

debug

tags/v0.1.8
yuyuanshifu 4 years ago
parent
commit
9536f5da1d
4 changed files with 45 additions and 2 deletions
  1. +14
    -0
      models/cloudbrain.go
  2. +28
    -0
      routers/repo/cloudbrain.go
  3. +1
    -0
      routers/routes/routes.go
  4. +2
    -2
      templates/repo/cloudbrain/index.tmpl

+ 14
- 0
models/cloudbrain.go View File

@@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"time"
"xorm.io/xorm"

"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil"
@@ -19,6 +20,7 @@ const (
JobStopped CloudbrainStatus = "STOPPED"
JobSucceeded CloudbrainStatus = "SUCCEEDED"
JobFailed CloudbrainStatus = "FAILED"
JobRunning CloudbrainStatus = "RUNNING"
)

type Cloudbrain struct {
@@ -31,6 +33,7 @@ type Cloudbrain struct {
SubTaskName string `xorm:"INDEX"`
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
CanDebug bool `xorm:"-"`

User *User `xorm:"-"`
Repo *Repository `xorm:"-"`
@@ -320,3 +323,14 @@ func SetCloudbrainStatusByJobID(jobID string, status CloudbrainStatus) (err erro
_, err = x.Cols("status").Where("cloudbrain.job_id=?", jobID).Update(cb)
return
}

func UpdateJob(job *Cloudbrain) error {
return updateJob(x, job)
}

func updateJob(e Engine, job *Cloudbrain) error {
var sess *xorm.Session
sess = e.Where("job_id = ?", job.JobID)
_, err := sess.Cols("status").Update(job)
return err
}

+ 28
- 0
routers/repo/cloudbrain.go View File

@@ -50,6 +50,15 @@ func CloudBrainIndex(ctx *context.Context) {
return
}

timestamp := time.Now().Unix()
for i, task := range ciTasks {
if task.Status == string(models.JobRunning) && (timestamp - int64(task.CreatedUnix) > 30){
ciTasks[i].CanDebug = true
} else {
ciTasks[i].CanDebug = false
}
}

pager := context.NewPagination(int(count), setting.UI.IssuePagingNum, page, 5)
pager.SetDefaultParams(ctx)
ctx.Data["Page"] = pager
@@ -153,12 +162,31 @@ func CloudBrainShow(ctx *context.Context) {
taskRoles := jobRes.TaskRoles
taskRes, _ := models.ConvertToTaskPod(taskRoles["task1"].(map[string]interface{}))
ctx.Data["taskRes"] = taskRes
task.Status = taskRes.TaskStatuses[0].State
err = models.UpdateJob(task)
if err != nil {
ctx.Data["error"] = err.Error()
}
}

ctx.Data["jobID"] = jobID
ctx.HTML(200, tplCloudBrainShow)
}

func CloudBrainDebug(ctx *context.Context) {
ctx.Data["PageIsCloudBrain"] = true

var jobID = ctx.Params(":jobid")
task, err := models.GetCloudbrainByJobID(jobID)
if err != nil {
ctx.ServerError("GetCloudbrainByJobID failed", err)
return
}

debugUrl := setting.DebugServerHost + "jpylab_" + task.JobID + "_" + task.SubTaskName
ctx.Redirect(debugUrl)
}

func downloadCode(repo *models.Repository, codePath string) error {
/*
if err := git.Clone(repo.RepoPath(), codePath, git.CloneRepoOptions{


+ 1
- 0
routers/routes/routes.go View File

@@ -895,6 +895,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Group("/cloudbrain", func() {
m.Get("", reqRepoCloudBrainReader, repo.CloudBrainIndex)
m.Get("/:jobid", reqRepoCloudBrainReader, repo.CloudBrainShow)
m.Get("/:jobid/debug", reqRepoCloudBrainReader, repo.CloudBrainDebug)
m.Get("/create", reqRepoCloudBrainWriter, repo.CloudBrainNew)
m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateCloudBrainForm{}), repo.CloudBrainCreate)
}, context.RepoRef())


+ 2
- 2
templates/repo/cloudbrain/index.tmpl View File

@@ -54,9 +54,9 @@
</a>
</span>
</div>
<div class="one wide column">
<div class="one wide column" style="{{if not .CanDebug}}visibility: hidden;{{end}}">
<span class="ui text center clipboard">
<a class="title" href="{{$.Link}}/{{.JobID}}">
<a class="title" href="{{$.Link}}/{{.JobID}}/debug">
<span class="fitted">调试</span>
</a>
</span>


Loading…
Cancel
Save