@@ -438,90 +438,133 @@ func isCustomTask(ctx context.Context, rprt ResolvedPipelineRunTask) bool {
438438
439439// ResolvePipelineRunTask retrieves a single Task's instance using the getTask to fetch
440440// the spec. If it is unable to retrieve an instance of a referenced Task, it will return
441- // an error, otherwise it returns a list of all of the Tasks retrieved. It will retrieve
441+ // an error, otherwise it returns a list of all the Tasks retrieved. It will retrieve
442442// the Resources needed for the TaskRun using the mapping of providedResources.
443443func ResolvePipelineRunTask (
444444 ctx context.Context ,
445445 pipelineRun v1beta1.PipelineRun ,
446446 getTask resources.GetTask ,
447447 getTaskRun resources.GetTaskRun ,
448448 getRun GetRun ,
449- task v1beta1.PipelineTask ,
449+ pipelineTask v1beta1.PipelineTask ,
450450 providedResources map [string ]* resourcev1alpha1.PipelineResource ,
451451) (* ResolvedPipelineRunTask , error ) {
452-
453452 rprt := ResolvedPipelineRunTask {
454- PipelineTask : & task ,
453+ PipelineTask : & pipelineTask ,
455454 }
456455 rprt .CustomTask = isCustomTask (ctx , rprt )
457456 if rprt .IsCustomTask () {
458- rprt .RunName = getRunName (pipelineRun .Status .Runs , pipelineRun .Status .ChildReferences , task .Name , pipelineRun .Name )
457+ rprt .RunName = getRunName (pipelineRun .Status .Runs , pipelineRun .Status .ChildReferences , pipelineTask .Name , pipelineRun .Name )
459458 run , err := getRun (rprt .RunName )
460459 if err != nil && ! kerrors .IsNotFound (err ) {
461460 return nil , fmt .Errorf ("error retrieving Run %s: %w" , rprt .RunName , err )
462461 }
463462 rprt .Run = run
464463 } else {
465- rprt .TaskRunName = GetTaskRunName (pipelineRun .Status .TaskRuns , pipelineRun .Status .ChildReferences , task .Name , pipelineRun .Name )
466-
467- taskRun , err := getTaskRun (rprt .TaskRunName )
468- if err != nil {
469- if ! kerrors .IsNotFound (err ) {
470- return nil , fmt .Errorf ("error retrieving TaskRun %s: %w" , rprt .TaskRunName , err )
471- }
472- }
473- if taskRun != nil {
474- rprt .TaskRun = taskRun
475- }
476-
477- // Find the Task that this PipelineTask is using
478- spec , taskName , kind , err := resolveTask (ctx , taskRun , getTask , task )
479- if err != nil {
464+ rprt .TaskRunName = GetTaskRunName (pipelineRun .Status .TaskRuns , pipelineRun .Status .ChildReferences , pipelineTask .Name , pipelineRun .Name )
465+ if err := rprt .resolvePipelineRunTaskWithTaskRun (ctx , rprt .TaskRunName , getTask , getTaskRun , pipelineTask , providedResources ); err != nil {
480466 return nil , err
481467 }
468+ }
469+ return & rprt , nil
470+ }
482471
483- spec .SetDefaults (ctx )
484- rtr , err := resolvePipelineTaskResources (task , & spec , taskName , kind , providedResources )
485- if err != nil {
486- return nil , fmt .Errorf ("couldn't match referenced resources with declared resources: %w" , err )
472+ func (t * ResolvedPipelineRunTask ) resolvePipelineRunTaskWithTaskRun (
473+ ctx context.Context ,
474+ taskRunName string ,
475+ getTask resources.GetTask ,
476+ getTaskRun resources.GetTaskRun ,
477+ pipelineTask v1beta1.PipelineTask ,
478+ providedResources map [string ]* resourcev1alpha1.PipelineResource ,
479+ ) error {
480+ taskRun , err := t .resolveTaskRun (taskRunName , getTaskRun )
481+ if err != nil {
482+ return err
483+ }
484+
485+ if err := t .resolveTaskResources (ctx , getTask , pipelineTask , providedResources , taskRun ); err != nil {
486+ return err
487+ }
488+
489+ return nil
490+ }
491+
492+ func (t * ResolvedPipelineRunTask ) resolveTaskRun (
493+ taskRunName string ,
494+ getTaskRun resources.GetTaskRun ,
495+ ) (* v1beta1.TaskRun , error ) {
496+ taskRun , err := getTaskRun (taskRunName )
497+ if err != nil {
498+ if ! kerrors .IsNotFound (err ) {
499+ return nil , fmt .Errorf ("error retrieving TaskRun %s: %w" , taskRunName , err )
487500 }
501+ }
502+ if taskRun != nil {
503+ t .TaskRun = taskRun
504+ }
505+ return taskRun , nil
506+ }
488507
489- rprt .ResolvedTaskResources = rtr
508+ func (t * ResolvedPipelineRunTask ) resolveTaskResources (
509+ ctx context.Context ,
510+ getTask resources.GetTask ,
511+ pipelineTask v1beta1.PipelineTask ,
512+ providedResources map [string ]* resourcev1alpha1.PipelineResource ,
513+ taskRun * v1beta1.TaskRun ,
514+ ) error {
515+
516+ spec , taskName , kind , err := resolveTask (ctx , taskRun , getTask , pipelineTask )
517+ if err != nil {
518+ return err
490519 }
491- return & rprt , nil
520+
521+ spec .SetDefaults (ctx )
522+ rtr , err := resolvePipelineTaskResources (pipelineTask , & spec , taskName , kind , providedResources )
523+ if err != nil {
524+ return fmt .Errorf ("couldn't match referenced resources with declared resources: %w" , err )
525+ }
526+ t .ResolvedTaskResources = rtr
527+
528+ return nil
492529}
493530
494- func resolveTask (ctx context.Context , taskRun * v1beta1.TaskRun , getTask resources.GetTask , task v1beta1.PipelineTask ) (v1beta1.TaskSpec , string , v1beta1.TaskKind , error ) {
531+ func resolveTask (
532+ ctx context.Context ,
533+ taskRun * v1beta1.TaskRun ,
534+ getTask resources.GetTask ,
535+ pipelineTask v1beta1.PipelineTask ,
536+ ) (v1beta1.TaskSpec , string , v1beta1.TaskKind , error ) {
495537 var (
496538 t v1beta1.TaskObject
497539 err error
498540 spec v1beta1.TaskSpec
499541 taskName string
500542 kind v1beta1.TaskKind
501543 )
502- if task .TaskRef != nil {
544+
545+ if pipelineTask .TaskRef != nil {
503546 // If the TaskRun has already a stored TaskSpec in its status, use it as source of truth
504547 if taskRun != nil && taskRun .Status .TaskSpec != nil {
505548 spec = * taskRun .Status .TaskSpec
506- taskName = task .TaskRef .Name
549+ taskName = pipelineTask .TaskRef .Name
507550 } else {
508- t , err = getTask (ctx , task .TaskRef .Name )
551+ t , err = getTask (ctx , pipelineTask .TaskRef .Name )
509552 switch {
510553 case errors .Is (err , remote .ErrorRequestInProgress ):
511554 return v1beta1.TaskSpec {}, "" , "" , err
512555 case err != nil :
513556 return v1beta1.TaskSpec {}, "" , "" , & TaskNotFoundError {
514- Name : task .TaskRef .Name ,
557+ Name : pipelineTask .TaskRef .Name ,
515558 Msg : err .Error (),
516559 }
517560 default :
518561 spec = t .TaskSpec ()
519562 taskName = t .TaskMetadata ().Name
520563 }
521564 }
522- kind = task .TaskRef .Kind
565+ kind = pipelineTask .TaskRef .Kind
523566 } else {
524- spec = task .TaskSpec .TaskSpec
567+ spec = pipelineTask .TaskSpec .TaskSpec
525568 }
526569 return spec , taskName , kind , err
527570}
0 commit comments