Add architecture specific runner(s)
To facilitate 'native' cross-building, I suggest adding (one or more) builders that can build on different architectures.
Currently, I use qemu myself for arch builds. I understand there is a preference for dedicated hardware?
I would recommend that a hosted machine/VM is created, runnining qemu-user-static, binfmt-misc and has the 'fix-binaries' flag enabled, docker in priviledged mode, with the following config for the runner (as example)
CONTAINER="gitlab-runner:latest"
RUNNER_NAME="${1}"
REGISTRATION_TOKEN="${2}"
docker exec -it "${CONTAINER}" gitlab-runner register \
--docker-image "registry.hub.docker.com/library/alpine:latest" \
--docker-privileged \
--docker-pull-policy="if-not-present" \
--docker-tlsverify=true \
--docker-volumes "/run/docker.sock:/run/docker.sock" \
--executor "docker" \
--name "${RUNNER_NAME}" \
--non-interactive \
--registration-token "${REGISTRATION_TOKEN}" \
--tag-list "docker-alpine,qemu" \
--url "https://gitlab.com"
Where the tag list can be of course extended to only limit a host to a certain architecture, this could be useful when running on bare metal. As qemu should not be invoked on native arm, even having qemu installed by default shouldn't matter?
If that makes sense at all :)