建立无状态 worker reconcile 边界

This commit is contained in:
2026-09-20 18:11:57 +00:00
parent 3f336310af
commit 22dc3fef63
5 changed files with 247 additions and 3 deletions
+7 -1
View File
@@ -5,6 +5,7 @@ package taskscheduler
import (
"context"
"errors"
"fmt"
runnerv1 "gitea.dev/actionslib/runner/v1"
@@ -13,6 +14,7 @@ import (
// Assignment is the immutable input handed to a Pod or VM provisioner.
type Assignment struct {
ID string
Task *runnerv1.Task
Identity taskidentity.Identity
}
@@ -38,5 +40,9 @@ func (s *Scheduler) Run(ctx context.Context, task *runnerv1.Task) error {
if err != nil {
return err
}
return s.Dispatcher.Dispatch(ctx, Assignment{Task: task, Identity: identity})
return s.Dispatcher.Dispatch(ctx, Assignment{
ID: fmt.Sprintf("gitea-task-%d", task.GetId()),
Task: task,
Identity: identity,
})
}
+3
View File
@@ -39,6 +39,9 @@ func TestRunDerivesIdentityBeforeDispatch(t *testing.T) {
if dispatcher.assignment.Task != task {
t.Fatal("dispatcher did not receive the fetched task")
}
if dispatcher.assignment.ID != "gitea-task-42" {
t.Fatalf("assignment ID = %q", dispatcher.assignment.ID)
}
want := "spiffe://ddupan.top/ci/panxiao81/gitea-dynamic-runner/test"
if dispatcher.assignment.Identity.SPIFFEID != want {
t.Fatalf("SPIFFE ID = %q, want %q", dispatcher.assignment.Identity.SPIFFEID, want)