Skip to content

Commit 97785b2

Browse files
authored
document custom builds images & better clarify limitations (#93)
1 parent 3511666 commit 97785b2

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

src/content/docs/aws/capabilities/config/configuration.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ This section covers configuration options that are specific to certain AWS servi
127127
| Variable | Example Values | Description |
128128
| - | - | - |
129129
| `CODEBUILD_REMOVE_CONTAINERS` | `0`\|`1` (default) | Remove Docker containers associated with a CodeBuild build tasks after execution. Disabling this and dumping container logs might help with troubleshooting failing builds. |
130+
| `CODEBUILD_ENABLE_CUSTOM_IMAGES` | `0` (default) \|`1` | Enable the usage of arbitrary CodeBuild build images. By default, all the builds are executed in a Amazon Linux 2023 container. |
130131

131132
### CodePipeline
132133

src/content/docs/aws/services/codebuild.mdx

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -331,8 +331,8 @@ awslocal codebuild create-project --cli-input-json file://create-project.json
331331
You have now created a CodeBuild project called `codebuild-demo-project` that uses the S3 buckets you just created as source and artifact.
332332

333333
:::note
334-
LocalStack does not allow to customize the build environment.
335-
Depending on the host architecture, the build will be executed an Amazon Linux container, version `3.0.x` and `5.0.x`, respectively for the ARM and the x86 architecture.
334+
By default, LocalStack runs the all the builds in a Amazon Linux Container, ignoring the image provided in the `environment` parameter.
335+
See the [Build Environments](#build-environments) section for more details.
336336
:::
337337

338338
### Run the build
@@ -368,10 +368,33 @@ Once the build is completed, you can verify that the JAR artifact has been uploa
368368
awslocal s3 ls s3://codebuild-demo-output
369369
```
370370

371+
372+
## Build Environments
373+
374+
LocalStack does not offer out-of-the-box all the build environments provided by AWS CodeBuild.
375+
By default, all the builds are executed in a Amazon Linux 2023 image (`public.ecr.aws/codebuild/amazonlinux-x86_64-standard:5.0` and `public.ecr.aws/codebuild/amazonlinux-aarch64-standard:3.0` for x86 and ARM, respectively).
376+
You can overcome this limitation by activating the `CODEBUILD_ENABLE_CUSTOM_IMAGES` environment variable.
377+
378+
AWS shares the Dockerfiles of official AWS CodeBuild curated Docker images in a dedicated [GitHub repository](https://github.com/aws/aws-codebuild-docker-images).
379+
For instance, let us assume you want to run your builds on the Ubuntu `7.0` standard image.
380+
381+
First, you have to build the image as follows:
382+
383+
```bash
384+
git clone https://github.com/aws/aws-codebuild-docker-images.git
385+
cd aws-codebuild-docker-images
386+
cd ubuntu/standard/7.0
387+
docker build -t aws/codebuild/standard:7.0 .
388+
```
389+
390+
Then, start LocalStack with `CODEBUILD_ENABLE_CUSTOM_IMAGES=1`.
391+
Finally, you can use the create image name, i.e., `aws/codebuild/standard:7.0` in the environment reference when you create you CodeBuild project.
392+
371393
## Limitations
372394

373395
- CodeBuild currently only supports S3, NO_SOURCE, and CODEPIPELINE as [project source](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).
374-
- CodeBuild only uses Amazon Linux as the build environment for a build project.
396+
- Custom build environments needs to have `bash` installed to properly work in LocalStack.
397+
- Environment variables in the `buildspec` are currently not supported.
375398
- Communication with the LocalStack container within the build environment is possible only via the host network, by using the Gateway IP address (typically 172.17.0.1) or `host.docker.internal` if running on MacOS.
376399

377400
## API Coverage

0 commit comments

Comments
 (0)