From 995551f1aa4a2dd6f6fe08d03fc213b1c0f4b54d Mon Sep 17 00:00:00 2001 From: Christopher Homberger Date: Fri, 20 Feb 2026 20:21:00 +0100 Subject: [PATCH] experiment --- internal/app/run/runner.go | 21 +++++++++++++++------ internal/app/run/workflow.go | 12 +++++++++++- internal/pkg/report/reporter.go | 16 ++++++++++++++++ 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/internal/app/run/runner.go b/internal/app/run/runner.go index 0024b75c..9d8f246c 100644 --- a/internal/app/run/runner.go +++ b/internal/app/run/runner.go @@ -151,15 +151,20 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report. return err } - // plan := &model.Plan{} - // TODO GITEA plan, err := model.CombineWorkflowPlanner(workflow).PlanJob(jobID) if err != nil { return err } job := workflow.GetJob(jobID) - reporter.ResetSteps(len(job.Steps)) + var stepIds []string + for i, v := range job.Steps { + if v.ID == "" { + v.ID = fmt.Sprint(i) + } + stepIds = append(stepIds, v.ID) + } + reporter.SetStepIdMapping(stepIds...) taskContext := task.Context.Fields @@ -245,6 +250,10 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report. ContainerOptions: r.cfg.Container.Options, ContainerDaemonSocket: r.cfg.Container.DockerHost, Privileged: r.cfg.Container.Privileged, + + Platforms: map[string]string{ + "dummy": "-self-hosted", + }, // TODO GITEA // DefaultActionInstance: r.getDefaultActionsURL(ctx, task), // PlatformPicker: r.labels.PickPlatform, @@ -278,9 +287,9 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report. // ctx = common.WithLoggerHook(ctx, reporter) ctx = runner.WithJobLoggerFactory(ctx, &JobLoggerFactory{reporter: reporter}) - if !log.IsLevelEnabled(log.DebugLevel) { - ctx = runner.WithJobLoggerFactory(ctx, NullLogger{}) - } + // if !log.IsLevelEnabled(log.DebugLevel) { + // ctx = runner.WithJobLoggerFactory(ctx, NullLogger{}) + // } execErr := executor(ctx) reporter.SetOutputs(job.Outputs) diff --git a/internal/app/run/workflow.go b/internal/app/run/workflow.go index b6f765f3..3753d6aa 100644 --- a/internal/app/run/workflow.go +++ b/internal/app/run/workflow.go @@ -17,7 +17,16 @@ import ( func generateWorkflow(task *runnerv1.Task) (*model.Workflow, string, error) { workflow, err := model.ReadWorkflow(bytes.NewReader(task.WorkflowPayload), model.WorkflowConfig{ - Schema: schema.GetGiteaWorkflowSchema(), + // Schema: schema.GetGiteaWorkflowSchema(), + // Allow everything + Schema: &schema.Schema{ + Definitions: map[string]schema.Definition{ + "workflow-root": { + Context: []string{"github", "gitea", "env", "job", "matrix", "inputs", "vars"}, + OneOf: &[]string{"any"}, + }, + }, + }, }) if err != nil { return nil, "", err @@ -53,6 +62,7 @@ func generateWorkflow(task *runnerv1.Task) (*model.Workflow, string, error) { // TODO GITEA workflow.Jobs[jobID].RawNeeds = rawNeeds + workflow.Jobs[jobID].RawRunsOn.Encode("dummy") return workflow, jobID, nil } diff --git a/internal/pkg/report/reporter.go b/internal/pkg/report/reporter.go index e49402b9..e3cfee06 100644 --- a/internal/pkg/report/reporter.go +++ b/internal/pkg/report/reporter.go @@ -7,6 +7,7 @@ import ( "context" "fmt" "regexp" + "slices" "strings" "sync" "time" @@ -40,6 +41,8 @@ type Reporter struct { debugOutputEnabled bool stopCommandEndToken string + + stepIds []string } func NewReporter(ctx context.Context, cancel context.CancelFunc, client client.Client, task *runnerv1.Task) *Reporter { @@ -82,6 +85,13 @@ func (r *Reporter) ResetSteps(l int) { } } +func (r *Reporter) SetStepIdMapping(stepIDs ...string) { + r.ResetSteps(len(stepIDs)) + r.stateMu.Lock() + defer r.stateMu.Unlock() + r.stepIds = stepIDs +} + func (r *Reporter) Levels() []log.Level { return log.AllLevels } @@ -132,6 +142,12 @@ func (r *Reporter) Fire(entry *log.Entry) error { if v, ok := v.(int); ok && len(r.state.Steps) > v { step = r.state.Steps[v] } + } else if v, ok := entry.Data["stepID"]; ok { + if v, ok := v.([]string); ok && len(v) >= 1 { + if no := slices.Index(r.stepIds, v[0]); no >= 0 && len(r.state.Steps) > no { + step = r.state.Steps[no] + } + } } if step == nil { if !r.duringSteps() {