User Tools

Site Tools


gitlab-ci-multiplatform

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
gitlab-ci-multiplatform [2021/01/08 08:08] baumigitlab-ci-multiplatform [2021/01/09 10:07] (current) – [Enable Emulators] baumi
Line 1: Line 1:
 ====== Gitlab CI MultiPlatform Build ====== ====== Gitlab CI MultiPlatform Build ======
  
-===== Enable Emulators ===== +===== Enable binary formats ===== 
-<code> +<code bash
-docker run -it --rm --privileged tonistiigi/binfmt --install all+docker run --rm --privileged tonistiigi/binfmt --install all
 { {
   "supported": [   "supported": [
Line 23: Line 23:
   ]   ]
 } }
 +</code>
 +===== Create buildx enabled docker image for builds =====
 +<file bash 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
 +</file>
 +
 +Credits to [[https://github.com/jdrouet|Jérémie Drouet]]
 +
 +==== Build & push image ====
 +
 +<code bash>
 +$ docker build --pull -t registry/docker-with-buildx .
 +$ docker push registry/docker-with-buildx
 </code> </code>
  
 ===== Switch to buildx in .gitlab-ci.yml ===== ===== Switch to buildx in .gitlab-ci.yml =====
 +Define CI_PLATFORMS variable in Settings / CI/CD:
 +
 +CI_PLATFORMS = linux/amd64,linux/arm/v7,...
 +
 <file bash .gitlab-ci.yml> <file bash .gitlab-ci.yml>
-image: docker+image: registry/docker-with-buildx
  
 services: services:
Line 36: Line 70:
   script:   script:
     - docker login -u $CI_USER -p $CI_TOKEN $CI_REGISTRY     - docker login -u $CI_USER -p $CI_TOKEN $CI_REGISTRY
-    - export DOCKER_CLI_EXPERIMENTAL=enabled 
-    - export DOCKER_BUILDKIT=1 
     - docker buildx create --use     - docker buildx create --use
-    - docker buildx build --platform $CI_PLATFORMS --push --pull -t $CI_IMAGE .+    - docker buildx build --platform $CI_PLATFORMS --push --pull -t $CI_REGISTRY_IMAGE .
 </file> </file>
 +{{tag>kb git}}
gitlab-ci-multiplatform.1610089688.txt.gz · Last modified: 2021/01/08 08:08 by baumi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki