# MacBuildImage

A CodeBuild image running ARM MacOS.

This class has a bunch of public constants that represent the most popular images.

You can also specify a custom image using one of the static methods:

- MacBuildImage.fromDockerRegistry(image[, { secretsManagerCredentials }])
- MacBuildImage.fromEcrRepository(repo[, tag])
- MacBuildImage.fromAsset(parent, id, props)

Extends: MacBuildImage
Implements: IBuildImage

- Source: [`aws-codebuild/lib/project.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-codebuild/lib/project.ts#L2268)
- Type last changed: v2.244.0 · 19 Mar 2026

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import * as cdk from 'aws-cdk-lib';
import { aws_codebuild as codebuild } from 'aws-cdk-lib';
import { aws_ecr_assets as ecr_assets } from 'aws-cdk-lib';

declare const networkMode: ecr_assets.NetworkMode;
declare const platform: ecr_assets.Platform;
const macBuildImage = codebuild.MacBuildImage.fromAsset(this, 'MyMacBuildImage', {
  directory: 'directory',

  // the properties below are optional
  assetName: 'assetName',
  buildArgs: {
    buildArgsKey: 'buildArgs',
  },
  buildContexts: {
    buildContextsKey: 'buildContexts',
  },
  buildSecrets: {
    buildSecretsKey: 'buildSecrets',
  },
  buildSsh: 'buildSsh',
  cacheDisabled: false,
  cacheFrom: [{
    type: 'type',

    // the properties below are optional
    params: {
      paramsKey: 'params',
    },
  }],
  cacheTo: {
    type: 'type',

    // the properties below are optional
    params: {
      paramsKey: 'params',
    },
  },
  displayName: 'displayName',
  exclude: ['exclude'],
  extraHash: 'extraHash',
  file: 'file',
  followSymlinks: cdk.SymlinkFollowMode.NEVER,
  ignoreMode: cdk.IgnoreMode.GLOB,
  invalidation: {
    buildArgs: false,
    buildContexts: false,
    buildSecrets: false,
    buildSsh: false,
    extraHash: false,
    file: false,
    networkMode: false,
    outputs: false,
    platform: false,
    repositoryName: false,
    target: false,
  },
  networkMode: networkMode,
  outputs: ['outputs'],
  platform: platform,
  target: 'target',
});
```

## Properties

- `BASE_14`: [IBuildImage](/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.IBuildImage.html) (static) — Corresponds to the standard CodeBuild image `aws/codebuild/macos-arm-base:14`.

- `BASE_15`: [IBuildImage](/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.IBuildImage.html) (static) — Corresponds to the CodeBuild image `aws/codebuild/macos-arm-base:15`.

- `BASE_26`: [IBuildImage](/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.IBuildImage.html) (static) — Corresponds to the CodeBuild image `aws/codebuild/macos-arm-base:26`.

- `defaultComputeType`: [ComputeType](/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.ComputeType.html) — The default `ComputeType` to use with this image, if one was not specified in `BuildEnvironment#computeType` explicitly.

- `imageId`: string — The Docker image identifier that the build environment uses.

- `imagePullPrincipalType`: [ImagePullPrincipalType](/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.ImagePullPrincipalType.html) — The type of principal that CodeBuild will use to pull this build Docker image.

- `repository`: [IRepository](/cdk/api/v2/docs/aws-cdk-lib.aws_ecr.IRepository.html) — An optional ECR repository that the image is hosted in.

- `secretsManagerCredentials`: [ISecret](/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager.ISecret.html) — The secretsManagerCredentials for access to a private registry.

- `type`: string — The type of build environment.

## Methods

- `fromAsset(scope: Construct, id: string, props: DockerImageAssetProps): IBuildImage` (static) — Uses an Docker image asset as a ARM MacOS build image.

- `fromDockerRegistry(name: string, options?: DockerImageOptions): IBuildImage` (static) — Makes an ARM MacOS build image from a Docker Hub image.

- `fromEcrRepository(repository: IRepository, tagOrDigest?: string): IBuildImage` (static) — Makes an ARM MacOS build image from an ECR repository.

- `runScriptBuildspec(entrypoint: string): BuildSpec` — Make a buildspec to run the indicated script.

- `validate(buildEnvironment: BuildEnvironment): string[]` — Allows the image a chance to validate whether the passed configuration is correct.
