@@ -510,6 +510,21 @@ func (impl PipelineBuilderImpl) UpdateCiTemplate(updateRequest *bean.CiConfigReq
510510 return nil , err
511511 }
512512
513+ var repo string
514+ if updateRequest .DockerRepository != "" {
515+ repo = updateRequest .DockerRepository
516+ } else {
517+ repo = originalCiConf .DockerRepository
518+ }
519+
520+ if dockerArtifaceStore .RegistryType == repository .REGISTRYTYPE_ECR {
521+ err := impl .createEcrRepo (repo , dockerArtifaceStore .AWSRegion , dockerArtifaceStore .AWSAccessKeyId , dockerArtifaceStore .AWSSecretAccessKey )
522+ if err != nil {
523+ impl .logger .Errorw ("ecr repo creation failed while updating ci template" , "repo" , repo , "err" , err )
524+ return nil , err
525+ }
526+ }
527+
513528 originalCiConf .AfterDockerBuild = updateRequest .AfterDockerBuild
514529 originalCiConf .BeforeDockerBuild = updateRequest .BeforeDockerBuild
515530 originalCiConf .DockerBuildConfig = updateRequest .DockerBuildConfig
@@ -581,17 +596,10 @@ func (impl PipelineBuilderImpl) CreateCiPipeline(createRequest *bean.CiConfigReq
581596 }
582597
583598 if store .RegistryType == repository .REGISTRYTYPE_ECR {
584- impl .logger .Debugw ("attempting repo creation " , "repo" , repo )
585- err := util .CreateEcrRepo (repo , createRequest .DockerRepository , store .AWSRegion , store .AWSAccessKeyId ,
586- store .AWSSecretAccessKey )
599+ err := impl .createEcrRepo (repo , store .AWSRegion , store .AWSAccessKeyId , store .AWSSecretAccessKey )
587600 if err != nil {
588- if errors .IsAlreadyExists (err ) {
589- impl .logger .Warnw ("this repo already exists!!, skipping repo creation" , "repo" , repo )
590- } else {
591- impl .logger .Errorw ("ecr repo creation failed, it might be due to authorization or any other external " +
592- "dependency. please create repo manually before triggering ci" , "repo" , repo , "err" , err )
593- return nil , err
594- }
601+ impl .logger .Errorw ("ecr repo creation failed while creating ci pipeline" , "repo" , repo , "err" , err )
602+ return nil , err
595603 }
596604 }
597605 createRequest .DockerRepository = repo
@@ -648,6 +656,21 @@ func (impl PipelineBuilderImpl) CreateCiPipeline(createRequest *bean.CiConfigReq
648656 return createRes , nil
649657}
650658
659+ func (impl PipelineBuilderImpl ) createEcrRepo (dockerRepository , AWSRegion , AWSAccessKeyId , AWSSecretAccessKey string ) error {
660+ impl .logger .Debugw ("attempting ecr repo creation " , "repo" , dockerRepository )
661+ err := util .CreateEcrRepo (dockerRepository , AWSRegion , AWSAccessKeyId , AWSSecretAccessKey )
662+ if err != nil {
663+ if errors .IsAlreadyExists (err ) {
664+ impl .logger .Warnw ("this repo already exists!!, skipping repo creation" , "repo" , dockerRepository )
665+ } else {
666+ impl .logger .Errorw ("ecr repo creation failed, it might be due to authorization or any other external " +
667+ "dependency. please create repo manually before triggering ci" , "repo" , dockerRepository , "err" , err )
668+ return err
669+ }
670+ }
671+ return nil
672+ }
673+
651674func (impl PipelineBuilderImpl ) getGitMaterialsForApp (appId int ) ([]* bean.GitMaterial , error ) {
652675 materials , err := impl .materialRepo .FindByAppId (appId )
653676 if err != nil {
0 commit comments