Skip to content

Add ARM64 support

What does this MR do?

  • builds an ARM64 binary and runner helper image.

  • builds Docker images for both ARM and ARM64 runners.

  • Make a distinction between armhf,armv7/6 and armv8 with sub-architectures.

The distinction is required because not every armv8 can execute code for 32 Bit and 64 Bit (aarch64). For this case I resolved all merge conflicts from the awesome work in !613 (closed) from @klud . After this I made some updates to current system and enable multi-arch on shared-runners.

One import step would be to update the manifest on the docker hub so that every that tries to pull gitlab/gitlab-runner receives the right image with the correct cpu architecture to use.

And I would prefere a static binary for less image size but this can be done in a separate mr.

Using Alpine as base image because of its minimal footprint which is best suitable for embedded devices, resulting in :arm and :arm64 tags for both runner and runner helper images.

Why was this MR needed?

!613 (closed) seems to be outdated. And to test arm64 on the latest changes of gitlab-runner.

Are there points in the code the reviewer needs to double check?

Does this MR meet the acceptance criteria?

  • Documentation created/updated
  • Tests
    • Added for this feature/bug
    • All builds are passing
  • Branch has no merge conflicts with master (if you do - rebase it please)

What are the relevant issue numbers?

#1286 (closed) #1334 (closed) #2076 (closed) #2137 (closed)

👋 Split into multiple merge requests

  1. Binary distribution is done in !1687 (merged)
  2. Deb/rpm distribution is done in !1826 (merged)
  3. The Docker image is done in !1861 (merged)
Edited by Simon Mansfield

Merge request reports