func()

in pkg/runner/sequence_of_steps.go [38:59]


func (s *SequenceOfSteps) Run(ctx ctx.Context, stepsCtx *StepsContext) (*proto.StepResult, error) {
	result := NewStepResultBuilder(s.loadedFrom, s.params, s.specDef)

	if err := result.ObserveEnv(stepsCtx.ExpandAndApplyEnv(s.specDef.Env())); err != nil {
		return result.BuildFailure(), fmt.Errorf("expand step env: %w", err)
	}

	for _, step := range s.steps {
		stepResult, err := result.ObserveStepResult(step.Run(ctx, stepsCtx))
		stepsCtx.RecordResult(stepResult)

		if err != nil {
			return result.BuildFailure(), err // expose underlying step error (no need to wrap)
		}
	}

	if err := result.ObserveOutputs(s.readOutputs(stepsCtx, stepsCtx.StepResults())); err != nil {
		return result.BuildFailure(), fmt.Errorf("outputs: %w", err)
	}

	return result.Build(), nil
}