@@ -722,6 +722,88 @@ func (impl *CdHandlerImpl) GetCdBuildHistory(appId int, environmentId int, pipel
722722 return cdWorkflowArtifact , err
723723 }
724724 cdWorkflowArtifact = impl .converterWFRList (wfrList )
725+ if err == pg .ErrNoRows || wfrList == nil {
726+ return cdWorkflowArtifact , nil
727+ }
728+ var ciArtifactIds []int
729+ for _ , cdWfA := range cdWorkflowArtifact {
730+ ciArtifactIds = append (ciArtifactIds , cdWfA .CiArtifactId )
731+ }
732+ parentCiArtifact := make (map [int ]int )
733+ isLinked := false
734+ ciArtifacts , err := impl .ciArtifactRepository .GetArtifactParentCiAndWorkflowDetailsByIds (ciArtifactIds )
735+ if err != nil || len (ciArtifacts ) == 0 {
736+ impl .Logger .Errorw ("error fetching artifact data" , "err" , err )
737+ return cdWorkflowArtifact , err
738+ }
739+ var newCiArtifactIds []int
740+ for _ , ciArtifact := range ciArtifacts {
741+ if ciArtifact .ParentCiArtifact > 0 && ciArtifact .WorkflowId == nil {
742+ isLinked = true
743+ newCiArtifactIds = append (newCiArtifactIds , ciArtifact .ParentCiArtifact )
744+ parentCiArtifact [ciArtifact .Id ] = ciArtifact .ParentCiArtifact
745+ } else {
746+ newCiArtifactIds = append (newCiArtifactIds , ciArtifact .Id )
747+ }
748+ }
749+ // handling linked ci pipeline
750+ if isLinked {
751+ ciArtifactIds = newCiArtifactIds
752+ }
753+
754+ ciWfs , err := impl .ciWorkflowRepository .FindAllLastTriggeredWorkflowByArtifactId (ciArtifactIds )
755+ if err != nil && err != pg .ErrNoRows {
756+ impl .Logger .Errorw ("error in fetching ci wfs" , "artifactIds" , ciArtifactIds , "err" , err )
757+ return cdWorkflowArtifact , err
758+ } else if len (ciWfs ) == 0 {
759+ return cdWorkflowArtifact , nil
760+ }
761+
762+ wfGitTriggers := make (map [int ]map [int ]pipelineConfig.GitCommit )
763+ var ciPipelineId int
764+ for _ , ciWf := range ciWfs {
765+ ciPipelineId = ciWf .CiPipelineId
766+ wfGitTriggers [ciWf .Id ] = ciWf .GitTriggers
767+ }
768+ ciMaterials , err := impl .ciPipelineMaterialRepository .GetByPipelineIdForRegexAndFixed (ciPipelineId )
769+ if err != nil && err != pg .ErrNoRows {
770+ impl .Logger .Errorw ("err in fetching ci materials" , "ciMaterials" , ciMaterials , "err" , err )
771+ return cdWorkflowArtifact , err
772+ }
773+
774+ var ciMaterialsArr []pipelineConfig.CiPipelineMaterialResponse
775+ for _ , ciMaterial := range ciMaterials {
776+ res := pipelineConfig.CiPipelineMaterialResponse {
777+ Id : ciMaterial .Id ,
778+ GitMaterialId : ciMaterial .GitMaterialId ,
779+ GitMaterialName : ciMaterial .GitMaterial .Name [strings .Index (ciMaterial .GitMaterial .Name , "-" )+ 1 :],
780+ Type : string (ciMaterial .Type ),
781+ Value : ciMaterial .Value ,
782+ Active : ciMaterial .Active ,
783+ Url : ciMaterial .GitMaterial .Url ,
784+ }
785+ ciMaterialsArr = append (ciMaterialsArr , res )
786+ }
787+ var newCdWorkflowArtifact []pipelineConfig.CdWorkflowWithArtifact
788+ for _ , cdWfA := range cdWorkflowArtifact {
789+
790+ gitTriggers := make (map [int ]pipelineConfig.GitCommit )
791+ if isLinked {
792+ if gitTriggerVal , ok := wfGitTriggers [parentCiArtifact [cdWfA.CiArtifactId ]]; ok {
793+ gitTriggers = gitTriggerVal
794+ }
795+ } else {
796+ if gitTriggerVal , ok := wfGitTriggers [cdWfA .CiArtifactId ]; ok {
797+ gitTriggers = gitTriggerVal
798+ }
799+ }
800+
801+ cdWfA .GitTriggers = gitTriggers
802+ cdWfA .CiMaterials = ciMaterialsArr
803+ newCdWorkflowArtifact = append (newCdWorkflowArtifact , cdWfA )
804+
805+ }
806+ cdWorkflowArtifact = newCdWorkflowArtifact
725807 }
726808
727809 return cdWorkflowArtifact , nil
@@ -881,9 +963,9 @@ func (impl *CdHandlerImpl) FetchCdWorkflowDetails(appId int, environmentId int,
881963 return WorkflowResponse {}, err
882964 }
883965
884- var ciMaterialsArr []CiPipelineMaterialResponse
966+ var ciMaterialsArr []pipelineConfig. CiPipelineMaterialResponse
885967 for _ , m := range ciMaterials {
886- res := CiPipelineMaterialResponse {
968+ res := pipelineConfig. CiPipelineMaterialResponse {
887969 Id : m .Id ,
888970 GitMaterialId : m .GitMaterialId ,
889971 GitMaterialName : m .GitMaterial .Name [strings .Index (m .GitMaterial .Name , "-" )+ 1 :],
0 commit comments