gitlab-ci-multiplatform
This is an old revision of the document!
Table of Contents
Gitlab CI MultiPlatform Build
Enable Emulators
# docker run -it --rm --privileged tonistiigi/binfmt --install all
{
"supported": [
"linux/amd64",
"linux/arm64",
"linux/riscv64",
"linux/ppc64le",
"linux/s390x",
"linux/386",
"linux/arm/v7",
"linux/arm/v6"
],
"emulators": [
"qemu-aarch64",
"qemu-arm",
"qemu-ppc64le",
"qemu-riscv64",
"qemu-s390x"
]
}
Create buildx enabled docker image for builds
- Dockerfile
ARG BUILDX_VERSION=0.4.2 ARG DOCKER_VERSION=latest FROM alpine AS fetcher RUN apk add curl ARG BUILDX_VERSION RUN curl -L \ --output /docker-buildx \ "https://github.com/docker/buildx/releases/download/v${BUILDX_VERSION}/buildx-v${BUILDX_VERSION}.linux-amd64" RUN chmod a+x /docker-buildx ARG DOCKER_VERSION FROM docker:${DOCKER_VERSION} COPY --from=fetcher /docker-buildx /usr/lib/docker/cli-plugins/docker-buildx
Credits to https://github.com/jdrouet
Build image
$ docker build --pull -t registry/docker-with-buildx . $ docker push registry/docker-with-buildx
Switch to buildx in .gitlab-ci.yml
Define CI_PLATFORMS variable in Settings / CI/CD:
CI_PLATFORMS = linux/amd64,linux/arm/v7,…
- .gitlab-ci.yml
image: registry/docker-with-buildx services: - docker:dind build: stage: build script: - docker login -u $CI_USER -p $CI_TOKEN $CI_REGISTRY - docker buildx create --use - docker buildx build --platform $CI_PLATFORMS --push --pull -t $CI_REGISTRY_IMAGE .
gitlab-ci-multiplatform.1610182280.txt.gz · Last modified: by baumi
