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 )
}