diff options
author | yp05327 <576951401@qq.com> | 2023-05-01 23:14:20 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-01 22:14:20 +0800 |
commit | 5987f005237039a85e6e94d5439680eee1d82b4a (patch) | |
tree | 47ed7992113c1d889659a6919dc11b7cefaae73c /routers/web/repo/actions/view.go | |
parent | 18fc4f52891886cbe5c51fea87ac3d91979e97f4 (diff) | |
download | gitea-5987f005237039a85e6e94d5439680eee1d82b4a.tar.gz gitea-5987f005237039a85e6e94d5439680eee1d82b4a.zip |
Add rerun workflow button and refactor to use SVG octicons (#24350)
Changes:
- Add rerun workflow button. Then users can rerun the whole workflow by
only one-click.
- Refactor to use SVG octicons in RepoActionView.vue
![image](https://user-images.githubusercontent.com/18380374/234736083-dea9b333-ec11-4095-a113-763f3716fba7.png)
![image](https://user-images.githubusercontent.com/18380374/234736107-d657d19c-f70a-42f4-985f-156a8c7efb7a.png)
![image](https://user-images.githubusercontent.com/18380374/234736160-9ad372df-7089-4d18-9bab-48bca3f01878.png)
---------
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'routers/web/repo/actions/view.go')
-rw-r--r-- | routers/web/repo/actions/view.go | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/routers/web/repo/actions/view.go b/routers/web/repo/actions/view.go index c553aef9ae..f96cd2acf8 100644 --- a/routers/web/repo/actions/view.go +++ b/routers/web/repo/actions/view.go @@ -55,6 +55,7 @@ type ViewResponse struct { Status string `json:"status"` CanCancel bool `json:"canCancel"` CanApprove bool `json:"canApprove"` // the run needs an approval and the doer has permission to approve + CanRerun bool `json:"canRerun"` Done bool `json:"done"` Jobs []*ViewJob `json:"jobs"` Commit ViewCommit `json:"commit"` @@ -136,6 +137,7 @@ func ViewPost(ctx *context_module.Context) { resp.State.Run.Link = run.Link() resp.State.Run.CanCancel = !run.Status.IsDone() && ctx.Repo.CanWrite(unit.TypeActions) resp.State.Run.CanApprove = run.NeedApproval && ctx.Repo.CanWrite(unit.TypeActions) + resp.State.Run.CanRerun = run.Status.IsDone() && ctx.Repo.CanWrite(unit.TypeActions) resp.State.Run.Done = run.Status.IsDone() resp.State.Run.Jobs = make([]*ViewJob, 0, len(jobs)) // marshal to '[]' instead fo 'null' in json resp.State.Run.Status = run.Status.String() @@ -238,7 +240,7 @@ func ViewPost(ctx *context_module.Context) { ctx.JSON(http.StatusOK, resp) } -func Rerun(ctx *context_module.Context) { +func RerunOne(ctx *context_module.Context) { runIndex := ctx.ParamsInt64("run") jobIndex := ctx.ParamsInt64("job") @@ -246,10 +248,37 @@ func Rerun(ctx *context_module.Context) { if ctx.Written() { return } + + if err := rerunJob(ctx, job); err != nil { + ctx.Error(http.StatusInternalServerError, err.Error()) + return + } + + ctx.JSON(http.StatusOK, struct{}{}) +} + +func RerunAll(ctx *context_module.Context) { + runIndex := ctx.ParamsInt64("run") + + _, jobs := getRunJobs(ctx, runIndex, 0) + if ctx.Written() { + return + } + + for _, j := range jobs { + if err := rerunJob(ctx, j); err != nil { + ctx.Error(http.StatusInternalServerError, err.Error()) + return + } + } + + ctx.JSON(http.StatusOK, struct{}{}) +} + +func rerunJob(ctx *context_module.Context, job *actions_model.ActionRunJob) error { status := job.Status if !status.IsDone() { - ctx.JSON(http.StatusOK, struct{}{}) - return + return nil } job.TaskID = 0 @@ -261,13 +290,11 @@ func Rerun(ctx *context_module.Context) { _, err := actions_model.UpdateRunJob(ctx, job, builder.Eq{"status": status}, "task_id", "status", "started", "stopped") return err }); err != nil { - ctx.Error(http.StatusInternalServerError, err.Error()) - return + return err } actions_service.CreateCommitStatus(ctx, job) - - ctx.JSON(http.StatusOK, struct{}{}) + return nil } func Cancel(ctx *context_module.Context) { |