实现持久化 assignment handoff

This commit is contained in:
2026-09-20 18:20:22 +00:00
parent 22dc3fef63
commit 0d8b36380d
10 changed files with 464 additions and 27 deletions
+4 -14
View File
@@ -5,19 +5,13 @@ package taskscheduler
import (
"context"
"errors"
"fmt"
runnerv1 "gitea.dev/actionslib/runner/v1"
"git.ddupan.top/panxiao81/gitea-dynamic-runner/internal/taskidentity"
"git.ddupan.top/panxiao81/gitea-dynamic-runner/internal/taskassignment"
)
// Assignment is the immutable input handed to a Pod or VM provisioner.
type Assignment struct {
ID string
Task *runnerv1.Task
Identity taskidentity.Identity
}
type Assignment = taskassignment.Assignment
// Dispatcher creates exactly one executor for an already assigned Gitea task.
// It must not register another runner or ask Gitea for a task.
@@ -36,13 +30,9 @@ func (s *Scheduler) Run(ctx context.Context, task *runnerv1.Task) error {
if s.Dispatcher == nil {
return errors.New("executor dispatcher is required")
}
identity, err := taskidentity.FromTask(task, s.TrustDomain)
assignment, err := taskassignment.New(task, s.TrustDomain)
if err != nil {
return err
}
return s.Dispatcher.Dispatch(ctx, Assignment{
ID: fmt.Sprintf("gitea-task-%d", task.GetId()),
Task: task,
Identity: identity,
})
return s.Dispatcher.Dispatch(ctx, assignment)
}