experiment

This commit is contained in:
Christopher Homberger
2026-02-20 20:21:00 +01:00
parent 579b7af04f
commit 995551f1aa
3 changed files with 42 additions and 7 deletions

View File

@@ -151,15 +151,20 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report.
return err return err
} }
// plan := &model.Plan{}
// TODO GITEA // TODO GITEA
plan, err := model.CombineWorkflowPlanner(workflow).PlanJob(jobID) plan, err := model.CombineWorkflowPlanner(workflow).PlanJob(jobID)
if err != nil { if err != nil {
return err return err
} }
job := workflow.GetJob(jobID) 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 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, ContainerOptions: r.cfg.Container.Options,
ContainerDaemonSocket: r.cfg.Container.DockerHost, ContainerDaemonSocket: r.cfg.Container.DockerHost,
Privileged: r.cfg.Container.Privileged, Privileged: r.cfg.Container.Privileged,
Platforms: map[string]string{
"dummy": "-self-hosted",
},
// TODO GITEA // TODO GITEA
// DefaultActionInstance: r.getDefaultActionsURL(ctx, task), // DefaultActionInstance: r.getDefaultActionsURL(ctx, task),
// PlatformPicker: r.labels.PickPlatform, // 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 = common.WithLoggerHook(ctx, reporter)
ctx = runner.WithJobLoggerFactory(ctx, &JobLoggerFactory{reporter: reporter}) ctx = runner.WithJobLoggerFactory(ctx, &JobLoggerFactory{reporter: reporter})
if !log.IsLevelEnabled(log.DebugLevel) { // if !log.IsLevelEnabled(log.DebugLevel) {
ctx = runner.WithJobLoggerFactory(ctx, NullLogger{}) // ctx = runner.WithJobLoggerFactory(ctx, NullLogger{})
} // }
execErr := executor(ctx) execErr := executor(ctx)
reporter.SetOutputs(job.Outputs) reporter.SetOutputs(job.Outputs)

View File

@@ -17,7 +17,16 @@ import (
func generateWorkflow(task *runnerv1.Task) (*model.Workflow, string, error) { func generateWorkflow(task *runnerv1.Task) (*model.Workflow, string, error) {
workflow, err := model.ReadWorkflow(bytes.NewReader(task.WorkflowPayload), model.WorkflowConfig{ 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 { if err != nil {
return nil, "", err return nil, "", err
@@ -53,6 +62,7 @@ func generateWorkflow(task *runnerv1.Task) (*model.Workflow, string, error) {
// TODO GITEA // TODO GITEA
workflow.Jobs[jobID].RawNeeds = rawNeeds workflow.Jobs[jobID].RawNeeds = rawNeeds
workflow.Jobs[jobID].RawRunsOn.Encode("dummy")
return workflow, jobID, nil return workflow, jobID, nil
} }

View File

@@ -7,6 +7,7 @@ import (
"context" "context"
"fmt" "fmt"
"regexp" "regexp"
"slices"
"strings" "strings"
"sync" "sync"
"time" "time"
@@ -40,6 +41,8 @@ type Reporter struct {
debugOutputEnabled bool debugOutputEnabled bool
stopCommandEndToken string stopCommandEndToken string
stepIds []string
} }
func NewReporter(ctx context.Context, cancel context.CancelFunc, client client.Client, task *runnerv1.Task) *Reporter { 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 { func (r *Reporter) Levels() []log.Level {
return log.AllLevels 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 { if v, ok := v.(int); ok && len(r.state.Steps) > v {
step = 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 step == nil {
if !r.duringSteps() { if !r.duringSteps() {