From 20c3d85ba9caef27fbf83118ce4b6126fed97580 Mon Sep 17 00:00:00 2001 From: "Bo-Yi.Wu" Date: Sun, 4 Sep 2022 15:44:29 +0800 Subject: [PATCH] refactor(task): execute single task with gRPC data --- cmd/root.go | 2 +- runtime/runtime.go | 16 +--------------- runtime/task.go | 22 ++++++++++++++++------ 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 4d3579e..8f567a2 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -76,7 +76,7 @@ func runRoot(ctx context.Context, task *runtime.Task) func(cmd *cobra.Command, a } task.BuildID, _ = strconv.ParseInt(jobID, 10, 64) - task.Run(ctx) + task.Run(ctx, nil) return nil } } diff --git a/runtime/runtime.go b/runtime/runtime.go index 16e1302..f9d7977 100644 --- a/runtime/runtime.go +++ b/runtime/runtime.go @@ -3,7 +3,6 @@ package runtime import ( "context" "errors" - "fmt" "gitea.com/gitea/act_runner/client" runnerv1 "gitea.com/gitea/proto-go/runner/v1" @@ -59,18 +58,5 @@ func (s *Runner) Run(ctx context.Context, stage *runnerv1.Stage) error { } func (s *Runner) run(ctx context.Context, data *runnerv1.DetailResponse) error { - _, exist := globalTaskMap.Load(data.Build.Id) - if exist { - return fmt.Errorf("task %d already exists", data.Build.Id) - } - - task := NewTask(data.Build.Id, s.Client) - - // set task ve to global map - // when task is done or canceled, it will be removed from the map - globalTaskMap.Store(data.Build.Id, task) - - go task.Run(ctx) - - return nil + return NewTask(data.Build.Id, s.Client).Run(ctx, data) } diff --git a/runtime/task.go b/runtime/task.go index 4a5a98d..13764be 100644 --- a/runtime/task.go +++ b/runtime/task.go @@ -216,18 +216,27 @@ func (t *Task) reportSuccess(ctx context.Context) { _ = t.client.UpdateStep(ctx, stepRequest) } -func (t *Task) Run(ctx context.Context) { +func (t *Task) Run(ctx context.Context, data *runnerv1.DetailResponse) error { + _, exist := globalTaskMap.Load(data.Build.Id) + if exist { + return fmt.Errorf("task %d already exists", data.Build.Id) + } + + // set task ve to global map + // when task is done or canceled, it will be removed from the map + globalTaskMap.Store(data.Build.Id, t) + workflowsPath, err := getWorkflowsPath(t.Input.repoDirectory) if err != nil { t.reportFailure(ctx, err) - return + return err } t.log.Debugf("workflows path: %s", workflowsPath) planner, err := model.NewWorkflowPlanner(workflowsPath, false) if err != nil { t.reportFailure(ctx, err) - return + return err } var eventName string @@ -260,7 +269,7 @@ func (t *Task) Run(ctx context.Context) { curDir, err := os.Getwd() if err != nil { t.reportFailure(ctx, err) - return + return err } // run the plan @@ -298,7 +307,7 @@ func (t *Task) Run(ctx context.Context) { r, err := runner.New(config) if err != nil { t.reportFailure(ctx, err) - return + return err } cancel := artifacts.Serve(ctx, input.artifactServerPath, input.artifactServerPort) @@ -318,8 +327,9 @@ func (t *Task) Run(ctx context.Context) { if err := executor(ctx); err != nil { t.reportFailure(ctx, err) - return + return err } t.reportSuccess(ctx) + return nil }