Skip to content

Commit 600802e

Browse files
committed
TEP-0090: Split up ResolvePipelineRunTask
Prior to this commit, the logic for resolving `TaskRun` and its and `Resources` needed for a given `PipelineTask` was included within the `ResolvePipelineRunTask` function. In this change, we split the logic into their own functions for reuse and readability. We also fix the names of `PipelineTask` variables to distinguish them from `Tasks`. No functional changes made in this commit.
1 parent b5ea3e9 commit 600802e

File tree

1 file changed

+73
-40
lines changed

1 file changed

+73
-40
lines changed

pkg/reconciler/pipelinerun/resources/pipelinerunresolution.go

Lines changed: 73 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ func isCustomTask(ctx context.Context, rprt ResolvedPipelineRunTask) bool {
463463

464464
// ResolvePipelineRunTask retrieves a single Task's instance using the getTask to fetch
465465
// the spec. If it is unable to retrieve an instance of a referenced Task, it will return
466-
// an error, otherwise it returns a list of all of the Tasks retrieved. It will retrieve
466+
// an error, otherwise it returns a list of all the Tasks retrieved. It will retrieve
467467
// the Resources needed for the TaskRun using the mapping of providedResources.
468468
func ResolvePipelineRunTask(
469469
ctx context.Context,
@@ -472,91 +472,124 @@ func ResolvePipelineRunTask(
472472
getTaskRun resources.GetTaskRun,
473473
getRun GetRun,
474474
getCondition GetCondition,
475-
task v1beta1.PipelineTask,
475+
pipelineTask v1beta1.PipelineTask,
476476
providedResources map[string]*resourcev1alpha1.PipelineResource,
477477
) (*ResolvedPipelineRunTask, error) {
478-
479478
rprt := ResolvedPipelineRunTask{
480-
PipelineTask: &task,
479+
PipelineTask: &pipelineTask,
481480
}
482481
rprt.CustomTask = isCustomTask(ctx, rprt)
483482
if rprt.IsCustomTask() {
484-
rprt.RunName = getRunName(pipelineRun.Status.Runs, pipelineRun.Status.ChildReferences, task.Name, pipelineRun.Name)
483+
rprt.RunName = getRunName(pipelineRun.Status.Runs, pipelineRun.Status.ChildReferences, pipelineTask.Name, pipelineRun.Name)
485484
run, err := getRun(rprt.RunName)
486485
if err != nil && !kerrors.IsNotFound(err) {
487486
return nil, fmt.Errorf("error retrieving Run %s: %w", rprt.RunName, err)
488487
}
489488
rprt.Run = run
490489
} else {
491-
rprt.TaskRunName = GetTaskRunName(pipelineRun.Status.TaskRuns, pipelineRun.Status.ChildReferences, task.Name, pipelineRun.Name)
492-
493-
taskRun, err := getTaskRun(rprt.TaskRunName)
494-
if err != nil {
495-
if !kerrors.IsNotFound(err) {
496-
return nil, fmt.Errorf("error retrieving TaskRun %s: %w", rprt.TaskRunName, err)
497-
}
498-
}
499-
if taskRun != nil {
500-
rprt.TaskRun = taskRun
490+
rprt.TaskRunName = GetTaskRunName(pipelineRun.Status.TaskRuns, pipelineRun.Status.ChildReferences, pipelineTask.Name, pipelineRun.Name)
491+
if err := resolvePipelineRunTaskWithTaskRun(ctx, &rprt, rprt.TaskRunName, pipelineRun, getTask, getTaskRun, getCondition, pipelineTask, providedResources); err != nil {
492+
return nil, err
501493
}
494+
}
495+
return &rprt, nil
496+
}
502497

503-
// Find the Task that this PipelineTask is using
504-
spec, taskName, kind, err := resolveTask(ctx, taskRun, getTask, task)
505-
if err != nil {
506-
return nil, err
498+
func resolvePipelineRunTaskWithTaskRun(
499+
ctx context.Context,
500+
rprt *ResolvedPipelineRunTask,
501+
taskRunName string,
502+
pipelineRun v1beta1.PipelineRun,
503+
getTask resources.GetTask,
504+
getTaskRun resources.GetTaskRun,
505+
getCondition GetCondition,
506+
pipelineTask v1beta1.PipelineTask,
507+
providedResources map[string]*resourcev1alpha1.PipelineResource,
508+
) error {
509+
taskRun, err := getTaskRun(taskRunName)
510+
if err != nil {
511+
if !kerrors.IsNotFound(err) {
512+
return fmt.Errorf("error retrieving TaskRun %s: %w", taskRunName, err)
507513
}
514+
}
515+
rprt.TaskRun = taskRun
508516

509-
spec.SetDefaults(ctx)
510-
rtr, err := resolvePipelineTaskResources(task, &spec, taskName, kind, providedResources)
517+
rtr, err := resolveTaskResources(ctx, getTask, pipelineTask, providedResources, taskRun)
518+
if err != nil {
519+
return err
520+
}
521+
rprt.ResolvedTaskResources = rtr
522+
523+
// Get all conditions that this pipelineTask will be using, if any
524+
if len(pipelineTask.Conditions) > 0 {
525+
rcc, err := resolveConditionChecks(&pipelineTask, pipelineRun.Status.TaskRuns, pipelineRun.Status.ChildReferences, rprt.TaskRunName, getTaskRun, getCondition, providedResources)
511526
if err != nil {
512-
return nil, fmt.Errorf("couldn't match referenced resources with declared resources: %w", err)
527+
return err
513528
}
529+
rprt.ResolvedConditionChecks = rcc
530+
}
531+
return nil
532+
}
514533

515-
rprt.ResolvedTaskResources = rtr
534+
func resolveTaskResources(
535+
ctx context.Context,
536+
getTask resources.GetTask,
537+
pipelineTask v1beta1.PipelineTask,
538+
providedResources map[string]*resourcev1alpha1.PipelineResource,
539+
taskRun *v1beta1.TaskRun,
540+
) (*resources.ResolvedTaskResources, error) {
516541

517-
// Get all conditions that this pipelineTask will be using, if any
518-
if len(task.Conditions) > 0 {
519-
rcc, err := resolveConditionChecks(&task, pipelineRun.Status.TaskRuns, pipelineRun.Status.ChildReferences, rprt.TaskRunName, getTaskRun, getCondition, providedResources)
520-
if err != nil {
521-
return nil, err
522-
}
523-
rprt.ResolvedConditionChecks = rcc
524-
}
542+
spec, taskName, kind, err := resolveTask(ctx, taskRun, getTask, pipelineTask)
543+
if err != nil {
544+
return nil, err
525545
}
526-
return &rprt, nil
546+
547+
spec.SetDefaults(ctx)
548+
rtr, err := resolvePipelineTaskResources(pipelineTask, &spec, taskName, kind, providedResources)
549+
if err != nil {
550+
return nil, fmt.Errorf("couldn't match referenced resources with declared resources: %w", err)
551+
}
552+
553+
return rtr, nil
527554
}
528555

529-
func resolveTask(ctx context.Context, taskRun *v1beta1.TaskRun, getTask resources.GetTask, task v1beta1.PipelineTask) (v1beta1.TaskSpec, string, v1beta1.TaskKind, error) {
556+
func resolveTask(
557+
ctx context.Context,
558+
taskRun *v1beta1.TaskRun,
559+
getTask resources.GetTask,
560+
pipelineTask v1beta1.PipelineTask,
561+
) (v1beta1.TaskSpec, string, v1beta1.TaskKind, error) {
530562
var (
531563
t v1beta1.TaskObject
532564
err error
533565
spec v1beta1.TaskSpec
534566
taskName string
535567
kind v1beta1.TaskKind
536568
)
537-
if task.TaskRef != nil {
569+
570+
if pipelineTask.TaskRef != nil {
538571
// If the TaskRun has already a stored TaskSpec in its status, use it as source of truth
539572
if taskRun != nil && taskRun.Status.TaskSpec != nil {
540573
spec = *taskRun.Status.TaskSpec
541-
taskName = task.TaskRef.Name
574+
taskName = pipelineTask.TaskRef.Name
542575
} else {
543-
t, err = getTask(ctx, task.TaskRef.Name)
576+
t, err = getTask(ctx, pipelineTask.TaskRef.Name)
544577
switch {
545578
case errors.Is(err, remote.ErrorRequestInProgress):
546579
return v1beta1.TaskSpec{}, "", "", err
547580
case err != nil:
548581
return v1beta1.TaskSpec{}, "", "", &TaskNotFoundError{
549-
Name: task.TaskRef.Name,
582+
Name: pipelineTask.TaskRef.Name,
550583
Msg: err.Error(),
551584
}
552585
default:
553586
spec = t.TaskSpec()
554587
taskName = t.TaskMetadata().Name
555588
}
556589
}
557-
kind = task.TaskRef.Kind
558-
} else {
559-
spec = task.TaskSpec.TaskSpec
590+
kind = pipelineTask.TaskRef.Kind
591+
} else if pipelineTask.TaskSpec != nil {
592+
spec = pipelineTask.TaskSpec.TaskSpec
560593
}
561594
return spec, taskName, kind, err
562595
}

0 commit comments

Comments
 (0)