diff --git a/pkg/model/planner.go b/pkg/model/planner.go index 66db08ea..a70497e4 100644 --- a/pkg/model/planner.go +++ b/pkg/model/planner.go @@ -60,6 +60,13 @@ type PlannerConfig struct { Workflow WorkflowConfig } +// CombineWorkflowPlanner combines workflows to a WorkflowPlanner +func CombineWorkflowPlanner(workflows ...*Workflow) WorkflowPlanner { + return &workflowPlanner{ + workflows: workflows, + } +} + // NewWorkflowPlanner will load a specific workflow, all workflows from a directory or all workflows from a directory and its subdirectories func NewWorkflowPlanner(path string, config PlannerConfig) (WorkflowPlanner, error) { path, err := filepath.Abs(path) diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index 430f0928..2247ee29 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -74,6 +74,8 @@ type Config struct { Planner model.PlannerConfig // Configuration for the workflow planner Action model.ActionConfig // Configuration for action reading MainContextNames []string // e.g. "github", "gitea", "forgejo" + ContextData map[string]interface{} + EventJSON string } func (runnerConfig *Config) GetGitHubServerURL() string { @@ -129,7 +131,9 @@ func New(runnerConfig *Config) (Runner, error) { func (runner *runnerImpl) configure() (Runner, error) { runner.eventJSON = "{}" - if runner.config.EventPath != "" { + if runner.config.EventJSON != "" { + runner.eventJSON = runner.config.EventJSON + } else if runner.config.EventPath != "" { log.Debugf("Reading event.json from %s", runner.config.EventPath) eventJSONBytes, err := os.ReadFile(runner.config.EventPath) if err != nil { @@ -295,6 +299,7 @@ func (runner *runnerImpl) newRunContext(ctx context.Context, run *model.Run, mat StepResults: make(map[string]*model.StepResult), Matrix: matrix, caller: runner.caller, + ContextData: runner.config.ContextData, } rc.ExprEval = rc.NewExpressionEvaluator(ctx) rc.Name = rc.ExprEval.Interpolate(ctx, run.String())