From bee52a96b969ff6e97d271c0af59451573a95a43 Mon Sep 17 00:00:00 2001 From: Deon George Date: Tue, 27 Jun 2023 09:58:07 +1000 Subject: [PATCH] Update build to be multiarch --- .gitlab-ci.yml | 22 +++++++++++++++------- .gitlab-docker-armv7l.yml | 16 ++++++++++++++++ .gitlab-docker-manifest.yml | 10 ++++++++++ .gitlab-docker-x86_64.yml | 16 ++++++++++++++++ .gitlab-docker.yml | 33 --------------------------------- 5 files changed, 57 insertions(+), 40 deletions(-) create mode 100644 .gitlab-docker-armv7l.yml create mode 100644 .gitlab-docker-manifest.yml create mode 100644 .gitlab-docker-x86_64.yml delete mode 100644 .gitlab-docker.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8574067..8037d41 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,19 +1,27 @@ -image: docker:latest - stages: - build +- build-manifest variables: - VERSION: latest-${ARCH} - CACHETAG: build-${ARCH} + VERSION: latest DOCKER_HOST: tcp://docker:2375 + VERSIONARCH: ${VERSION}-${ARCH} +cache: + key: ${CI_JOB_NAME_SLUG}-${CI_COMMIT_REF_SLUG} + paths: + - build-cache + +image: docker:latest services: - docker:dind before_script: -- docker info -- docker version +- if [ ! -d build-cache ]; then mkdir build-cache; fi +- docker info && docker version - echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin -include: .gitlab-docker.yml +include: +- .gitlab-docker-x86_64.yml +# .gitlab-docker-armv7l.yml +- .gitlab-docker-manifest.yml diff --git a/.gitlab-docker-armv7l.yml b/.gitlab-docker-armv7l.yml new file mode 100644 index 0000000..6c8e1b4 --- /dev/null +++ b/.gitlab-docker-armv7l.yml @@ -0,0 +1,16 @@ +armv7l:build: + variables: + ARCH: armv7l + stage: build + script: + - if [ -f init ]; then chmod 500 init; fi + - ([ -z "$REFRESH" -a -f build-cache/${CI_COMMIT_REF_SLUG} ]) && docker load < build-cache/${CI_COMMIT_REF_SLUG} || true + - rm build-cache/* || true + - docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} --cache-from ${CI_REGISTRY_IMAGE}:${VERSIONARCH} -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH} . + - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH} + - docker save ${CI_REGISTRY_IMAGE}:${VERSIONARCH} > build-cache/${CI_COMMIT_REF_SLUG} + tags: + - docker + - armv7l + only: + - master diff --git a/.gitlab-docker-manifest.yml b/.gitlab-docker-manifest.yml new file mode 100644 index 0000000..9764ed5 --- /dev/null +++ b/.gitlab-docker-manifest.yml @@ -0,0 +1,10 @@ +x86_64:build-manifest: + stage: build-manifest + script: + - docker manifest create ${CI_REGISTRY_IMAGE}:${VERSION} ${CI_REGISTRY_IMAGE}:${VERSION}-x86_64 #${CI_REGISTRY_IMAGE}:${VERSION}-armv7l + - docker manifest push --purge ${CI_REGISTRY_IMAGE}:${VERSION} + tags: + - docker + - x86_64 + only: + - master diff --git a/.gitlab-docker-x86_64.yml b/.gitlab-docker-x86_64.yml new file mode 100644 index 0000000..a143ff2 --- /dev/null +++ b/.gitlab-docker-x86_64.yml @@ -0,0 +1,16 @@ +x86_64:build: + variables: + ARCH: x86_64 + stage: build + script: + - if [ -f init ]; then chmod 500 init; fi + - ([ -z "$REFRESH" -a -f build-cache/${CI_COMMIT_REF_SLUG} ]) && docker load < build-cache/${CI_COMMIT_REF_SLUG} || true + - rm build-cache/* || true + - docker build ${HTTP_PROXY:+--build-arg HTTP_PROXY=${HTTP_PROXY}} --cache-from ${CI_REGISTRY_IMAGE}:${VERSIONARCH} -t ${CI_REGISTRY_IMAGE}:${VERSIONARCH} . + - docker push ${CI_REGISTRY_IMAGE}:${VERSIONARCH} + - docker save ${CI_REGISTRY_IMAGE}:${VERSIONARCH} > build-cache/${CI_COMMIT_REF_SLUG} + tags: + - docker + - x86_64 + only: + - master diff --git a/.gitlab-docker.yml b/.gitlab-docker.yml deleted file mode 100644 index b6bbbb4..0000000 --- a/.gitlab-docker.yml +++ /dev/null @@ -1,33 +0,0 @@ -armv7l:build: - variables: - ARCH: armv7l - stage: build - image: docker:latest - script: - - if [ -f init ]; then chmod 500 init; fi - - ([ -z "$REFRESH" ] && docker pull ${CI_REGISTRY_IMAGE}:${CACHETAG}) || echo "true" - - docker build --cache-from ${CI_REGISTRY_IMAGE}:${CACHETAG} -t ${CI_REGISTRY_IMAGE}:${VERSION} -t ${CI_REGISTRY_IMAGE}:${CACHETAG} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSION} - - docker push ${CI_REGISTRY_IMAGE}:${CACHETAG} - tags: - - docker - - armv7l - only: - - master - -x86_64:build: - variables: - ARCH: x86_64 - stage: build - image: docker:latest - script: - - if [ -f init ]; then chmod 500 init; fi - - ([ -z "$REFRESH" ] && docker pull ${CI_REGISTRY_IMAGE}:${CACHETAG}) || echo "true" - - docker build --cache-from ${CI_REGISTRY_IMAGE}:${CACHETAG} -t ${CI_REGISTRY_IMAGE}:${VERSION} -t ${CI_REGISTRY_IMAGE}:${CACHETAG} . - - docker push ${CI_REGISTRY_IMAGE}:${VERSION} - - docker push ${CI_REGISTRY_IMAGE}:${CACHETAG} - tags: - - docker - - x86_64 - only: - - master