From 6c6a7e7d974840f075817f960fa664645f7d1213 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Tue, 28 Feb 2023 14:42:40 +0200 Subject: [PATCH] Avoid too long names for actions (#23162) (#23190) Backport #23162 The name of the job or step comes from the workflow file, while the name of the runner comes from its registration. If the strings used for these names are too long, they could cause db issues. Co-authored-by: Jason Song --- models/actions/run.go | 1 + models/actions/task.go | 3 ++- routers/api/actions/runner/runner.go | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/models/actions/run.go b/models/actions/run.go index 14d191c814e34..bf3db3cb23be8 100644 --- a/models/actions/run.go +++ b/models/actions/run.go @@ -194,6 +194,7 @@ func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWork if len(needs) > 0 { status = StatusBlocked } + job.Name, _ = util.SplitStringAtByteN(job.Name, 255) runJobs = append(runJobs, &ActionRunJob{ RunID: run.ID, RepoID: run.RepoID, diff --git a/models/actions/task.go b/models/actions/task.go index 5b6206c346425..ffec4c92aa8d8 100644 --- a/models/actions/task.go +++ b/models/actions/task.go @@ -298,8 +298,9 @@ func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask if len(workflowJob.Steps) > 0 { steps := make([]*ActionTaskStep, len(workflowJob.Steps)) for i, v := range workflowJob.Steps { + name, _ := util.SplitStringAtByteN(v.String(), 255) steps[i] = &ActionTaskStep{ - Name: v.String(), + Name: name, TaskID: task.ID, Index: int64(i), RepoID: task.RepoID, diff --git a/routers/api/actions/runner/runner.go b/routers/api/actions/runner/runner.go index 7dbab9da0a2b9..d0bfb2363e0c5 100644 --- a/routers/api/actions/runner/runner.go +++ b/routers/api/actions/runner/runner.go @@ -12,6 +12,7 @@ import ( "code.gitea.io/gitea/modules/actions" "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/util" actions_service "code.gitea.io/gitea/services/actions" runnerv1 "code.gitea.io/actions-proto-go/runner/v1" @@ -55,9 +56,10 @@ func (s *Service) Register( } // create new runner + name, _ := util.SplitStringAtByteN(req.Msg.Name, 255) runner := &actions_model.ActionRunner{ UUID: gouuid.New().String(), - Name: req.Msg.Name, + Name: name, OwnerID: runnerToken.OwnerID, RepoID: runnerToken.RepoID, AgentLabels: req.Msg.AgentLabels,