createPipeline()

in cdk-resources/lib/cdk-resources-stack.ts [271:394]


  createPipeline(pipelineName:string,codebuildRole:iam.Role){
    
 
    let codeRepo=this.codeRepo;
    let sourceArtifact = new pipeline.Artifact();
    let bncOutput=new pipeline.Artifact("Build-Containerize");
    let vndOutput=new pipeline.Artifact("Validate-and-Deploy-to-Test");
    let tnpOutput=new pipeline.Artifact("Test-and-Promote");
    let dtpOutput=new pipeline.Artifact("Deploy-to-Production");
    const appPipeline=new  pipeline.Pipeline(this,"pipeline",{
      pipelineName:pipelineName,
      
      stages:[
          {
            stageName:"Source",
            actions:[
                  new codepipeline_actions.CodeCommitSourceAction({
                    actionName: "App-Source",
                    repository: codeRepo,
                    branch: "master",
                    output: sourceArtifact,
                    codeBuildCloneOutput:true
                  })  
            ]
            
          },{
            
            stageName:"Build-and-Containerize",
            actions:[
              this.addBuildAction("Build-and-Containerize",sourceArtifact,{
                "ECR_DOCKER_REPO":{value:this.ecrFlashAppTest.repositoryName},
                "ECR_HELM_REPO":{value:this.ecrHelmTest.repositoryName},
                //"AWS_CODEGURU_PROFILER_GROUP_NAME":{value:this.profileGroup.profilingGroupName},
                "AWS_CODE_REVIEWER":{value:this.codeReviewer.attrAssociationArn},
                "ACCOUNTID":{value:this.account},
                "AWS_CODEGURU_PROFILER_TARGET_REGION":{value:this.region},
                "EXECUTABLENAME":{value:"Build-and-Containerize.sh"},
                "ARTIFACT_DOMAIN":{value:config.codeArtifactDomain},
                "ARTIFACT_REPOSITORY":{value:config.codeArtifactRepository},
                "SNS_TOPIC":{value:this.topic.topicArn}
              },
              codebuildRole,
              bncOutput)
              ]
          },
          {
            
            stageName:"Validate-and-Deploy-to-Test",
            actions:[
              this.addBuildAction("Validate-and-Deploy-to-Test",bncOutput,{
                "ECR_DOCKER_REPO":{value:this.ecrFlashAppTest.repositoryName},
                "ECR_HELM_REPO":{value:this.ecrHelmTest.repositoryName},
              
                "AWS_CODEGURU_PROFILER_TARGET_REGION":{value:this.region},
              "ARTIFACT_DOMAIN":{value:config.codeArtifactDomain},
                "ARTIFACT_REPOSITORY":{value:config.codeArtifactRepository},
                "ACCOUNTID":{value:this.account},
                "EXECUTABLENAME":{value:"Validate-and-Deploy-to-Test.sh"},
                "EKS_CLUSTERNAME":{value:this.eksDevClusterName},
                "EKS_CLUSTERROLE_ARN":{value:this.eksDevMasterRoleArn},
                "SNS_TOPIC":{value:this.topic.topicArn}
              },
              codebuildRole,
              vndOutput)
              ]
          },
          {
            stageName:"Test-and-Promote",
             actions:[
              this.addBuildAction("Test-and-Promote",vndOutput,{
                "TEST_ECR_DOCKER_REPO":{value:this.ecrFlashAppTest.repositoryName},
                "TEST_ECR_HELM_REPO":{value:this.ecrHelmTest.repositoryName},
                "ECR_DOCKER_REPO":{value:this.ecrFlashAppProd.repositoryName},
                "ECR_HELM_REPO":{value:this.ecrHelmProd.repositoryName},
                "AWS_CODEGURU_PROFILER_TARGET_REGION":{value:this.region},
                "ACCOUNTID":{value:this.account},
                "EXECUTABLENAME":{value:"Test-and-Promote.sh"},
                "ARTIFACT_DOMAIN":{value:config.codeArtifactDomain},
                "ARTIFACT_REPOSITORY":{value:config.codeArtifactRepository},
                "SNS_TOPIC":{value:this.topic.topicArn}
              },codebuildRole,
              tnpOutput,"BuildVariables")
              ]
            
          },
          {
            stageName:"Approval",
            actions:[
              new codepipeline_actions.ManualApprovalAction({
                actionName:"Approval",
                notificationTopic:this.topic,
                externalEntityLink:"#{BuildVariables.SERVICE_URL_OUT}"
              })
            ]
          },
          {
             stageName:"Deploy-to-Production",
             actions:[
              this.addBuildAction("Deploy-to-Production",tnpOutput,{
                "ECR_HELM_REPO":{value:this.ecrHelmProd.repositoryName},
                "ECR_DOCKER_REPO":{value:this.ecrFlashAppProd.repositoryName},
             
                "AWS_CODEGURU_PROFILER_TARGET_REGION":{value:this.region},
                "ARTIFACT_DOMAIN":{value:config.codeArtifactDomain},
                "ARTIFACT_REPOSITORY":{value:config.codeArtifactRepository},
                "ACCOUNTID":{value:this.account},
                "EXECUTABLENAME":{value:"Deploy-to-Production.sh"},
                "EKS_CLUSTERNAME":{value:this.eksProdClusterName},
                "EKS_CLUSTERROLE_ARN":{value:this.eksProdMasterRoleArn},
                "SNS_TOPIC":{value:this.topic.topicArn}
              },
              codebuildRole,
              dtpOutput)
              ]
          }
        ]
    });
  
    new CfnOutput(this,"codePipeline",{ value: appPipeline.pipelineName})
    
    
    // Add Policy to 
   // appPipeline.addToRolePolicy(new )
  }