]> source.dussan.org Git - gitea.git/commitdiff
Avoid too long names for actions (#23162)
authorJason Song <i@wolfogre.com>
Tue, 28 Feb 2023 10:20:36 +0000 (18:20 +0800)
committerGitHub <noreply@github.com>
Tue, 28 Feb 2023 10:20:36 +0000 (18:20 +0800)
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.

models/actions/run.go
models/actions/task.go
routers/api/actions/runner/runner.go

index a8d991471e635999caae778237908e46f7c6b6c1..d5ab45a51958aed9439d1bd20d22ea4e7bb8127c 100644 (file)
@@ -192,6 +192,7 @@ func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWork
                if len(needs) > 0 || run.NeedApproval {
                        status = StatusBlocked
                }
+               job.Name, _ = util.SplitStringAtByteN(job.Name, 255)
                runJobs = append(runJobs, &ActionRunJob{
                        RunID:             run.ID,
                        RepoID:            run.RepoID,
index 5b6206c3464251b16edfdfc76fb8c1bbcef5efe0..ffec4c92aa8d851281f1413b3851428b8bee8a25 100644 (file)
@@ -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,
index 7dbab9da0a2b93bc66f5cba58640ac1fd0e9de78..d0bfb2363e0c5973e721debe1255075283afe94f 100644 (file)
@@ -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,