ARM Support

Use Docker containers on ARM architecture

Codefresh is offering initial support for building Docker images for the ARM architecture. The support is currently in Alpha stage.

Enabling ARM support

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

Once approved, your build environment will move to an ARM cluster, and therefore all your builds will be ARM enabled. This means that if you also want to keep using the normal Linux/x86 builds, it is best to create a second Codefresh account just for trying ARM support.

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 normal 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 (e.g. 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:
  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 two steps

  1. A build step that reads a Dockerfile and creates a Docker image
  2. 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 Codefresh 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.