diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/compute-type.ts b/packages/aws-cdk-lib/aws-codebuild/lib/compute-type.ts index 923b70126056f..63cce6d3f384c 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/compute-type.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/compute-type.ts @@ -5,6 +5,7 @@ export enum ComputeType { SMALL = 'BUILD_GENERAL1_SMALL', MEDIUM = 'BUILD_GENERAL1_MEDIUM', LARGE = 'BUILD_GENERAL1_LARGE', + X_LARGE = 'BUILD_GENERAL1_XLARGE', X2_LARGE = 'BUILD_GENERAL1_2XLARGE', LAMBDA_1GB = 'BUILD_LAMBDA_1GB', LAMBDA_2GB = 'BUILD_LAMBDA_2GB', diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/project.ts b/packages/aws-cdk-lib/aws-codebuild/lib/project.ts index fec076b9dd0ed..1252969223e9f 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/project.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/project.ts @@ -2117,7 +2117,8 @@ export class WindowsBuildImage implements IBuildImage { errors.push('Windows images do not support Lambda compute types'); } - if (buildEnvironment.computeType === ComputeType.SMALL || buildEnvironment.computeType === ComputeType.X2_LARGE) { + const unsupportedComputeTypes = [ComputeType.SMALL, ComputeType.X_LARGE, ComputeType.X2_LARGE]; + if (buildEnvironment.computeType !== undefined && unsupportedComputeTypes.includes(buildEnvironment.computeType)) { errors.push(`Windows images do not support the '${buildEnvironment.computeType}' compute type`); } return errors; diff --git a/packages/aws-cdk-lib/aws-codebuild/test/codebuild.test.ts b/packages/aws-cdk-lib/aws-codebuild/test/codebuild.test.ts index 0b6f8af8556dc..7a09af0d6b5b0 100644 --- a/packages/aws-cdk-lib/aws-codebuild/test/codebuild.test.ts +++ b/packages/aws-cdk-lib/aws-codebuild/test/codebuild.test.ts @@ -1617,6 +1617,24 @@ test('using ComputeType.Small with a Windows image fails validation', () => { }).toThrow(/Windows images do not support the 'BUILD_GENERAL1_SMALL' compute type/); }); +test('using ComputeType.XLarge with a Windows image fails validation', () => { + const stack = new cdk.Stack(); + const invalidEnvironment: codebuild.BuildEnvironment = { + buildImage: codebuild.WindowsBuildImage.WIN_SERVER_CORE_2019_BASE, + computeType: codebuild.ComputeType.X_LARGE, + }; + + expect(() => { + new codebuild.Project(stack, 'MyProject', { + source: codebuild.Source.s3({ + bucket: new s3.Bucket(stack, 'MyBucket'), + path: 'path', + }), + environment: invalidEnvironment, + }); + }).toThrow(/Windows images do not support the 'BUILD_GENERAL1_XLARGE' compute type/); +}); + test('using ComputeType.X2Large with a Windows image fails validation', () => { const stack = new cdk.Stack(); const invalidEnvironment: codebuild.BuildEnvironment = {