Make Docker Executor ARM compatible
During our testing of new Omnibus auto-scale infrastracture we were hit by a problem that GitLab Runner Docker executor doesn't work on ARM.
This makes it possible, by:
- Prepare separate prebuilt image for ARM (it inflates binary by 15MB). The image is based on
scaleway/alpine
, - This also simplifies our image handling: we now build two images that are flattened which are then
docker import'ed
to Docker Engine (possibly this will solve theno-image
errors that we see on external packages), - The single image contains all helper scripts (see
/dockerfiles/build
)
This requires to have apt-get install binfmt-support qemu-user-static
installed on builder machine.
@tmaczukin What do you think?
Download the standalone binaries
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-linux-386
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-linux-amd64
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-linux-arm
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-darwin-386
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-darwin-amd64
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-windows-386.exe
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-windows-amd64.exe
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-freebsd-386
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-freebsd-amd64
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/binaries/gitlab-ci-multi-runner-freebsd-arm
Download one of the packages for Debian or Ubuntu
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/deb/gitlab-ci-multi-runner_i386.deb
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/deb/gitlab-ci-multi-runner_amd64.deb
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/deb/gitlab-ci-multi-runner_arm.deb
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/deb/gitlab-ci-multi-runner_armhf.deb
Download one of the packages for RedHat or CentOS
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/rpm/gitlab-ci-multi-runner_i686.rpm
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/rpm/gitlab-ci-multi-runner_amd64.rpm
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/rpm/gitlab-ci-multi-runner_arm.rpm
- https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/provide-arm-image/rpm/gitlab-ci-multi-runner_armhf.rpm
cc @marin
Fixes https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/364
Merge request reports
Activity
mentioned in issue omnibus-gitlab#1232 (closed)
It's a little tricky when it comes to architectures: there are multiple arm architectures :) For example:
Pine A64+:
# docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 1.10.1 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 0 Dirperm1 Supported: true Execution Driver: native-0.2 Logging Driver: json-file Plugins: Volume: local Network: null host bridge Kernel Version: 3.10.65-7-pine64-longsleep Operating System: Ubuntu 16.04 LTS OSType: linux Architecture: aarch64 CPUs: 4 Total Memory: 1.943 GiB
@marin is testing this build, trying to build Omnibus packages on ARM from X86_64
One comment
This requires to have apt-get install binfmt-support qemu-user-static installed on builder machine.
We should add this to development documentation and to
ci/prepare
script.Generally looks good
👍 If it's working for Omnibus then - after we update docs andci/prepare
script - we can merge this.Milestone changed to %v1.3
Nice! Seems this will solve #364 (closed)
@tmaczukin I updated docs.
ci/prepare
is not needed - this needs to be done on Docker Engine levelEdited by Kamil Trzcińśkimentioned in issue #1412 (closed)
mentioned in merge request gitlab-com/www-gitlab-com!2187 (merged)