Getting started

Software is maintained by people. In the case of Open Source Software (OSS), maintenance may be provided by a volunteer on best effort basis, or funded by commercial activities. This page lists continuous integration and continuous delivery (CI/CD) tools and services. Automatic CI/CD enables a maintainer to keep platform neutrality and quality high as contributions arrive continuously in today’s fast moving software ecosystem.

Running AArch64 containers on your Linux laptop

QEMU with Docker

QEMU provides user space emulation for platform architectures including AArch64. On your local platform, you can use QEMU to run the native AArch64 Docker experience. There are two necessary steps: install qemu-aarch64-static (or similarly titled package on your OS) then run Docker binding qemu-aarch64-static during container invocation. The process is described in detail, click here. Building a Docker container is also possible, but currently requires a more complicated setup. A suitable setup is described in this blog, click here.

Cross compiling on CI/CD services

CircleCI 

CircleCI is a CI/CD platform that currently does not have AArch64 as a native target. However,  there are a number of different approaches that can be employed to generate AArch64 target code with their platform. These are not specific to CircleCI and include: substituting in the AArch64 tool chain during compliation, using QEMU and Docker as described above.

Travis CI

Travis CI currently does not provide a native AArch64 target. The approaches described for CircleCI are also applicable to Travis CI: you can use a AArch64 tool chain or Docker container with QEMU.

Native Arm build pipelines

Codefresh

Codefresh is a CI/CD platform built for Kubernetes. With a a free account you can enable Arm support and start building Docker images natively on AArch64. All Codefresh features (unit/integration tests, private Docker registry, on-demand demo environments, HELM/Kubernetes deployments etc.) are fully available for Arm builds.

Drone IO

Drone IO is a free CI system for open source projects. It enables native builds on AArch64 on their hosted platform or on your own hardware. The process to enable a AArch64 build is to add Drone Cloud to your Github project with the addition of a .drone.yml file. Drone Cloud provides a free-tier service for open source projects.

openSUSE Build Service

The openSUSE Build Service is a public instance of the Open Build Service (OBS). OBS is used to develop the openSUSE distribution and can build packages for from source code Fedora, Debian, Ubuntu, SUSE Linux Enterprise and other distributions. OBS runs natively on AArch64 and the openSUSE Build Service has AArch64 targets.

Shippable

Shippable provide CI/CD natively on AArch64. A free account can be created for open source projects. Once you have an account the next step is to add a ‘shippable.yml’ file to your repo and subsequently add a link from your Shippable account to your Github repo. Detailed documentation for Arm specific features is available, click here.

GitLab

GitLab provides on premises or cloud hosted CI/CD. Gitlab has a system component called GitLab Runner that runs your jobs and send the results back to GitLab. There is a community supported Arm Docker image of GitLab Runner so that AArch64 hardware (e.g. a Raspberry PI 3, a machine from Packet or AWS) can become part of your GitLab CI/CD system and provide native AArch64 builds.

AArch64 platforms in the cloud

Packet.com

Packet.com provide bare-metal access to AArch64 platforms. Packet also have an Arm specific support activity Works on Arm that provides access and technical assistance to open source projects looking to add Arm as a supported platform.

AWS Graviton

AWS Graviton instances are AArch64 platforms that are available as part of the AWS portfolio of products. This page builds on the work from Ed Vielmetti at Packet who maintains a similar page, find out more information here.