Skip to content

Commit

Permalink
feat: Exposing codebuild project in BuildSpecPipeline for flexibility
Browse files Browse the repository at this point in the history
  • Loading branch information
OrdonioSa committed Jun 1, 2021
1 parent 5988532 commit b759d6f
Showing 1 changed file with 19 additions and 15 deletions.
34 changes: 19 additions & 15 deletions src/BuildSpecPipeline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,14 @@ export class BuildSpecPipeline extends Construct {

public readonly repository: Repository;
public readonly pipeline: Pipeline;
public readonly codebuildProject: PipelineProject;

constructor(scope: Construct, name: string, props?: BuildSpecPipelineProps) {
super(scope, name);

const p: BuildSpecPipelineProps = { ...buildSpecPipelinePropsDefaults, ...props };
this.repository = this.createOrUseRepository(p);
this.codebuildProject = this.createCodebuildProject(p);
this.pipeline = this.createPipeline(p);
}

Expand Down Expand Up @@ -96,17 +98,6 @@ export class BuildSpecPipeline extends Construct {
codeBuildCloneOutput: true,
});

const pipelineProject = new PipelineProject(this, 'PipelineProject', {
projectName: `${this.getProjectName(p)}-Build`,
buildSpec: this.getBuildSpec(p),
environment: p.buildEnvironment ?? {
buildImage: LinuxBuildImage.STANDARD_5_0,
privileged: false,
},
description: `CodePipeline for ${p.projectName}`,
timeout: Duration.hours(1),
});

if (p.codeArtifactDomain) {
const codeArtifactPolicy = new PolicyStatement({
actions: ['codeartifact:*'],
Expand All @@ -123,11 +114,11 @@ export class BuildSpecPipeline extends Construct {
resources: ['*'],
effect: Effect.ALLOW,
});
pipelineProject.addToRolePolicy(codeArtifactPolicy);
pipelineProject.addToRolePolicy(codeArtifactTokenPolicyStatement);
this.codebuildProject.addToRolePolicy(codeArtifactPolicy);
this.codebuildProject.addToRolePolicy(codeArtifactTokenPolicyStatement);
}

pipelineProject.addToRolePolicy(new PolicyStatement({
this.codebuildProject.addToRolePolicy(new PolicyStatement({
actions: ['ssm:GetParameter', 'ssm:GetParameters'],
resources: ['*'],
effect: Effect.ALLOW,
Expand All @@ -136,7 +127,7 @@ export class BuildSpecPipeline extends Construct {
const codeBuildAction = new CodeBuildAction({
actionName: 'BuildAction',
input: sourceOutput,
project: pipelineProject,
project: this.codebuildProject,
});

return new Pipeline(this, 'Pipeline', {
Expand Down Expand Up @@ -184,4 +175,17 @@ export class BuildSpecPipeline extends Construct {
protected extendBuildSpec(buildSpec: any) {
// INTENTIONALLY EMPTY
}

private createCodebuildProject(p: BuildSpecPipelineProps) {
return new PipelineProject(this, 'PipelineProject', {
projectName: `${this.getProjectName(p)}-Build`,
buildSpec: this.getBuildSpec(p),
environment: p.buildEnvironment ?? {
buildImage: LinuxBuildImage.STANDARD_5_0,
privileged: false,
},
description: `CodePipeline for ${p.projectName}`,
timeout: Duration.hours(1),
});
}
}

0 comments on commit b759d6f

Please sign in to comment.