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
: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
- Added for this feature/bug
- All builds are passing
Branch has no merge conflicts with
master(if you do - rebase it please)