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
- Binary distribution is done in !1687 (merged)
- Deb/rpm distribution is done in !1826 (merged)
- The Docker image is done in !1861 (merged)