ARM Support

Use Docker containers on ARM architecture

Codefresh is offering initial support for building Docker images for the ARM architecture. ARM support is only available to Enterprise customers.

Enabling ARM support

To run ARM pipelines in Codefresh, open a free account and then contact sales in order to enable ARM support.

Due to unforeseen circumstances, we are currently unable to support ARM builds on our SaaS infrastructure. We apologize for the inconvenience.

Once approved, you will get access to a new runtime environment installed on an ARM cluster. This means that you will be able to run both ARM and Linux/x86 builds from the same Codefresh account by choosing the appropriate pipeline settings.

Using ARM builders in Codefresh

Once ARM support is enabled for your account, there is no other special requirement to start building ARM images.

Just read the Codefresh documentation:

The only important thing to notice is to make sure that the base Docker images you use are ARM-compiled.

Most popular Docker images (i.e., Alpine) already offer ARM support so all your builds should work right away.

Checking for ARM images in Dockerhub

Checking for ARM images in Dockerhub

Dockerhub has a lot of public images that are offered in multiple architectures. You will get errors only if you use a less popular image that has no ARM support.

Example for an ARM build

The Python sample application used in the quick start guide is based on an official Docker image that already has ARM support.

Create a pipeline for it with the following YAML content:

codefresh.yml

version: '1.0'
steps:
  main_clone:
    title: 'Cloning main repository...'
    type: git-clone
    repo: '${{CF_REPO_OWNER}}/${{CF_REPO_NAME}}'
    revision: '${{CF_REVISION}}'
    git: github
  MyArmDockerImage:
    title: Building Docker ARM Image
    type: build
    image_name: python-flask-sampleapp-arm
    tag: '${{CF_BRANCH_TAG_NORMALIZED}}'
    dockerfile: Dockerfile
  MyUnitTests:
    title: Running Unit tests
    image: ${{MyArmDockerImage}}
    commands: 
      - uname -a
      - python setup.py test

This pipeline creates a Docker image for a python application and then runs unit tests inside it.

It contains three steps:

  1. A clone step that checks out code from the Git repository.
  2. A build step that reads a Dockerfile and creates a Docker image.
  3. A freestyle step that runs unit tests.

The logs verify that this is an ARM image:

Running Unit tests

Running Unit tests

Once the pipeline is finished you will see the Docker image stored in the default Docker Registry:

Private Registry for ARM docker images

Private Registry for ARM docker images

You can also launch it as a demo environment.

Launching Docker ARM images

Launching Docker ARM images

In summary, the workflow for ARM images is exactly the same as the usual Linux/x86 images.

Windows container support macOS and iOS builds