Skip to content

Commit

Permalink
Refactor ResolvedPipelineTask and remove redundant fields
Browse files Browse the repository at this point in the history
Currently, PipelineRun resolution code can be difficult to understand. This commit removes some of the redundant fields in  ResolvedPipelineTask including the singular version of: TaskRun, TaskRunName, ObjectRun, ObjectRunName so that only the list of TaskRuns, TaskRunNames,  ObjectRuns, ObjectRunNames can be used  regardless if the PipelineTask is matrixed or not. This also streamlines the codebase by removing the switch statements used throughout. This partially addresses Issue tektoncd#6628.
  • Loading branch information
EmmaMunley committed May 17, 2023
1 parent e175e6a commit 350e429
Show file tree
Hide file tree
Showing 8 changed files with 996 additions and 943 deletions.
51 changes: 27 additions & 24 deletions pkg/reconciler/pipelinerun/pipelinerun.go
Original file line number Diff line number Diff line change
Expand Up @@ -772,34 +772,21 @@ func (c *Reconciler) runNextSchedulableTask(ctx context.Context, pr *v1beta1.Pip
}
}()

switch {
case rpt.IsCustomTask() && rpt.PipelineTask.IsMatrixed():
if rpt.IsCustomTask() {
rpt.RunObjects, err = c.createRunObjects(ctx, rpt, pr)
if err != nil {
recorder.Eventf(pr, corev1.EventTypeWarning, "RunsCreationFailed", "Failed to create Runs %q: %v", rpt.RunObjectNames, err)
err = fmt.Errorf("error creating Runs called %s for PipelineTask %s from PipelineRun %s: %w", rpt.RunObjectNames, rpt.PipelineTask.Name, pr.Name, err)
return err
}
case rpt.IsCustomTask():
rpt.RunObject, err = c.createRunObject(ctx, rpt.RunObjectName, nil, rpt, pr)
if err != nil {
recorder.Eventf(pr, corev1.EventTypeWarning, "RunCreationFailed", "Failed to create Run %q: %v", rpt.RunObjectName, err)
err = fmt.Errorf("error creating Run called %s for PipelineTask %s from PipelineRun %s: %w", rpt.RunObjectName, rpt.PipelineTask.Name, pr.Name, err)
return err
}
case rpt.PipelineTask.IsMatrixed():
} else {
rpt.TaskRuns, err = c.createTaskRuns(ctx, rpt, pr)
if err != nil {
recorder.Eventf(pr, corev1.EventTypeWarning, "TaskRunsCreationFailed", "Failed to create TaskRuns %q: %v", rpt.TaskRunNames, err)
err = fmt.Errorf("error creating TaskRuns called %s for PipelineTask %s from PipelineRun %s: %w", rpt.TaskRunNames, rpt.PipelineTask.Name, pr.Name, err)
return err
}
default:
rpt.TaskRun, err = c.createTaskRun(ctx, rpt.TaskRunName, nil, rpt, pr)
if err != nil {
recorder.Eventf(pr, corev1.EventTypeWarning, "TaskRunCreationFailed", "Failed to create TaskRun %q: %v", rpt.TaskRunName, err)
err = fmt.Errorf("error creating TaskRun called %s for PipelineTask %s from PipelineRun %s: %w", rpt.TaskRunName, rpt.PipelineTask.Name, pr.Name, err)
return err
for i := range rpt.TaskRunNames {
recorder.Eventf(pr, corev1.EventTypeWarning, "TaskRunCreationFailed", "Failed to create TaskRun %q: %v", rpt.TaskRunNames[i], err)
err = fmt.Errorf("error creating TaskRun called %s for PipelineTask %s from PipelineRun %s: %w", rpt.TaskRunNames[i], rpt.PipelineTask.Name, pr.Name, err)
return err
}
}
}
}
Expand All @@ -820,9 +807,17 @@ func (c *Reconciler) createTaskRuns(ctx context.Context, rpt *resources.Resolved
ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "createTaskRuns")
defer span.End()
var taskRuns []*v1beta1.TaskRun
matrixCombinations := rpt.PipelineTask.Matrix.FanOut()
var matrixCombinations []v1beta1.Params

if rpt.PipelineTask.IsMatrixed() {
matrixCombinations = rpt.PipelineTask.Matrix.FanOut()
}

for i, taskRunName := range rpt.TaskRunNames {
params := matrixCombinations[i]
var params v1beta1.Params
if len(matrixCombinations) > 0 {
params = matrixCombinations[i]
}
taskRun, err := c.createTaskRun(ctx, taskRunName, params, rpt, pr)
if err != nil {
return nil, err
Expand Down Expand Up @@ -894,9 +889,17 @@ func (c *Reconciler) createRunObjects(ctx context.Context, rpt *resources.Resolv
var runObjects []v1beta1.RunObject
ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "createRunObjects")
defer span.End()
matrixCombinations := rpt.PipelineTask.Matrix.FanOut()
var matrixCombinations []v1beta1.Params

if rpt.PipelineTask.IsMatrixed() {
matrixCombinations = rpt.PipelineTask.Matrix.FanOut()
}

for i, runObjectName := range rpt.RunObjectNames {
params := matrixCombinations[i]
var params v1beta1.Params
if rpt.PipelineTask.IsMatrixed() {
params = matrixCombinations[i]
}
runObject, err := c.createRunObject(ctx, runObjectName, params, rpt, pr)
if err != nil {
return nil, err
Expand Down
Loading

0 comments on commit 350e429

Please sign in to comment.