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