private cdkDeployAction()

in cdk-pipeline/lib/cdk-pipeline-stack.ts [133:175]


  private cdkDeployAction(pipelineInput: codepipeline.Artifact, runOrder: number) : codepipeline_actions.CodeBuildAction {
    // Create build spec for the CodeBuild project for deploying CDK app
    const cdkDeployActionSpec = codebuild.BuildSpec.fromObject({
      version: "0.2",
      phases: {
        pre_build: {
          commands: [
            "ls -rtla $CODEBUILD_SRC_DIR/",
            "cd cdk-eks",
            "ls -rtla",
            "npm install",
            "npm run build",
          ],
        },
        build: {
          commands: [
            "npx cdk deploy --require-approval never"
          ]
        },
      }
    });

    // Create CodeBuild project for running conftest to validate K8S manifest files
    const cdkDeployCodeBuildProject = new codebuild.Project(this, 'cdkDeployCodeBuildProject', {
      environment: {
        buildImage: codebuild.LinuxBuildImage.STANDARD_4_0,
        computeType: codebuild.ComputeType.SMALL,
      },
      buildSpec: cdkDeployActionSpec,
    });

    cdkDeployCodeBuildProject.role?.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AdministratorAccess'));
    
    // Create the CodePipeline action and associate it with the CodeBuild Project above
    const cdkDeployAction = new codepipeline_actions.CodeBuildAction({
      actionName: "DeployCDKApp",
      project: cdkDeployCodeBuildProject,
      input: pipelineInput,
      runOrder
    });

    return cdkDeployAction;
  }