private k8sValidationAction()

in cdk-pipeline/lib/cdk-pipeline-stack.ts [89:130]


  private k8sValidationAction(pipelineInput: codepipeline.Artifact) : codepipeline_actions.CodeBuildAction {
    // Create build spec for the CodeBuild project for running conftest to validate K8S manifest files
    const conftestFileName = this.conftestDownloadUrl.split('/').slice(-1)[0];
    const k8sValidationBuildSpec = codebuild.BuildSpec.fromObject({
      version: "0.2",
      phases: {
        pre_build: {
          commands: [
            "ls -rtla $CODEBUILD_SRC_DIR/",
            "cd conftest/bin",
            "ls -rtla",
            `wget ${this.conftestDownloadUrl} >/dev/null 2>&1`,
            `tar xzf ${conftestFileName}`,
            "ls -rtla"
          ],
        },
        build: {
          commands: [
            "./conftest test ../../k8s-manifests/ --combine"
          ]
        },
      }
    });

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

    // Create the CodePipeline action and associate it with the CodeBuild Project above
    const k8sValidationAction = new codepipeline_actions.CodeBuildAction({
      actionName: "ValidateK8sManifests",
      project: k8sValidationCodeBuildProject,
      input: pipelineInput,
    });

    return k8sValidationAction;
  }