From e0271217e2b2280a4662ec54aa59f003656ae6b6 Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Sat, 22 Apr 2023 04:42:59 +0000 Subject: [PATCH 1/4] show wrokflow config error on file view also Signed-off-by: a1012112796 <1012112796@qq.com> --- modules/actions/workflows.go | 12 ++++++++++++ routers/web/repo/view.go | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/modules/actions/workflows.go b/modules/actions/workflows.go index f37f4f2878af..040a65237a21 100644 --- a/modules/actions/workflows.go +++ b/modules/actions/workflows.go @@ -29,6 +29,18 @@ func init() { } } +func IsWorkFlow(path string) bool { + if (!strings.HasSuffix(path, ".yaml")) && (!strings.HasSuffix(path, ".yml")) { + return false + } + + if strings.HasPrefix(path, ".gitea/workflows") { + return true + } + + return strings.HasPrefix(path, ".github/workflows") +} + func ListWorkflows(commit *git.Commit) (git.Entries, error) { tree, err := commit.SubTree(".gitea/workflows") if _, ok := err.(git.ErrNotExist); ok { diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 5a11073ba9a4..27ad2ec7dbb0 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -24,6 +24,7 @@ import ( repo_model "code.gitea.io/gitea/models/repo" unit_model "code.gitea.io/gitea/models/unit" user_model "code.gitea.io/gitea/models/user" + "code.gitea.io/gitea/modules/actions" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/charset" "code.gitea.io/gitea/modules/container" @@ -39,6 +40,7 @@ import ( "code.gitea.io/gitea/modules/typesniffer" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/routers/web/feed" + "github.com/nektos/act/pkg/model" ) const ( @@ -348,6 +350,16 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st if issueConfigErr != nil { ctx.Data["FileError"] = strings.TrimSpace(issueConfigErr.Error()) } + } else if actions.IsWorkFlow(ctx.Repo.TreePath) { + content, err := actions.GetContentFromEntry(entry) + if err != nil { + ctx.Error(http.StatusInternalServerError, err.Error()) + return + } + _, workFlowErr := model.ReadWorkflow(bytes.NewReader(content)) + if workFlowErr != nil { + ctx.Data["FileError"] = ctx.Locale.Tr("actions.runs.invalid_workflow_helper", workFlowErr.Error()) + } } isDisplayingSource := ctx.FormString("display") == "source" From 5e8ef6b8967ba2ac65badc8e6be54f04c6abfe33 Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Sat, 22 Apr 2023 12:51:30 +0800 Subject: [PATCH 2/4] Update modules/actions/workflows.go Co-authored-by: wxiaoguang --- modules/actions/workflows.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/actions/workflows.go b/modules/actions/workflows.go index 040a65237a21..2604788d4468 100644 --- a/modules/actions/workflows.go +++ b/modules/actions/workflows.go @@ -34,11 +34,7 @@ func IsWorkFlow(path string) bool { return false } - if strings.HasPrefix(path, ".gitea/workflows") { - return true - } - - return strings.HasPrefix(path, ".github/workflows") + return strings.HasPrefix(path, ".gitea/workflows") || strings.HasPrefix(path, ".github/workflows") } func ListWorkflows(commit *git.Commit) (git.Entries, error) { From 2c81c22515cd376b23202aa47faa98cec1b59d9f Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Sat, 22 Apr 2023 04:59:44 +0000 Subject: [PATCH 3/4] log Signed-off-by: a1012112796 <1012112796@qq.com> --- routers/web/repo/view.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 27ad2ec7dbb0..00f17f0594b0 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -40,6 +40,7 @@ import ( "code.gitea.io/gitea/modules/typesniffer" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/routers/web/feed" + "github.com/nektos/act/pkg/model" ) @@ -353,8 +354,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st } else if actions.IsWorkFlow(ctx.Repo.TreePath) { content, err := actions.GetContentFromEntry(entry) if err != nil { - ctx.Error(http.StatusInternalServerError, err.Error()) - return + log.Error("actions.GetContentFromEntry: %v", err) } _, workFlowErr := model.ReadWorkflow(bytes.NewReader(content)) if workFlowErr != nil { From 4e392ea30223d659052d1d7085263926ef99631e Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Sat, 22 Apr 2023 12:06:29 +0000 Subject: [PATCH 4/4] rename Signed-off-by: a1012112796 <1012112796@qq.com> --- modules/actions/workflows.go | 2 +- routers/web/repo/view.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/actions/workflows.go b/modules/actions/workflows.go index 2604788d4468..d560b7718f27 100644 --- a/modules/actions/workflows.go +++ b/modules/actions/workflows.go @@ -29,7 +29,7 @@ func init() { } } -func IsWorkFlow(path string) bool { +func IsWorkflow(path string) bool { if (!strings.HasSuffix(path, ".yaml")) && (!strings.HasSuffix(path, ".yml")) { return false } diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 00f17f0594b0..45e50cc3cbc0 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -351,7 +351,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st if issueConfigErr != nil { ctx.Data["FileError"] = strings.TrimSpace(issueConfigErr.Error()) } - } else if actions.IsWorkFlow(ctx.Repo.TreePath) { + } else if actions.IsWorkflow(ctx.Repo.TreePath) { content, err := actions.GetContentFromEntry(entry) if err != nil { log.Error("actions.GetContentFromEntry: %v", err)