Problem
When using Arm-based Docker images (such as images for Raspberry Pi) with the Docker executor, your job completes immediately after the "Spin up Environment" step without running any of your build steps. This occurs because Arm images require Arm resources, but the Docker executor defaults to x86_64 architecture.
Solutions
Specify an Arm Resource Class
To run Arm-based Docker images, specify an Arm resource class in your job configuration:
jobs:
build:
docker:
- image: your-arm-image:latest
resource_class: arm.medium
steps:
- checkout
- run: echo "Running on Arm!"Available Arm resource classes for Docker executor:
-
arm.medium- 2 vCPU, 8GB RAM -
arm.large- 4 vCPU, 16GB RAM
Verify Your Image Supports Arm
Check that your Docker image is built for Arm architecture (arm64). Not all images support Arm. You can verify support on Docker Hub by checking the OS/ARCH tags for your image.
CircleCI convenience images that support Arm include both linux/amd64 and linux/arm64 architectures.
Outcome
After adding the appropriate Arm resource class to your configuration, your job will run on Arm infrastructure and execute all build steps successfully. The "Spin up Environment" step will be followed by your checkout and other configured steps.
Additional Notes
- Arm resource classes require Arm-compatible Docker images
- The default Docker executor uses x86_64 architecture
- Different architectures use different binaries and may have compatibility requirements
- Resource class access depends on your CircleCI plan
Comments
Article is closed for comments.