From 8391d7cb827c4ad61a24f8c63e28cd0ffa1f5b98 Mon Sep 17 00:00:00 2001 From: Deon George Date: Tue, 25 Apr 2023 21:37:41 +1000 Subject: [PATCH] Add .gitlab CI/CD configuration to build docker image --- .gitlab-ci.yml | 31 +++++++++++++++++++++++++++++++ .gitlab-docker-manifest.yml | 10 ++++++++++ .gitlab-docker-x86_64.yml | 16 ++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gitlab-docker-manifest.yml create mode 100644 .gitlab-docker-x86_64.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..d995f28 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,31 @@ +stages: +- build +- build-manifest + +variables: + 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: +- if [ ! -d build-cache ]; then mkdir build-cache; fi +- sed -ie s'/https/http/' /etc/apk/repositories +- HTTP_PROXY=http://proxy.dege.lan:3128 apk add git curl +- docker info && docker version +# env|sort +- echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin + +include: +- .gitlab-docker-x86_64.yml +# .gitlab-docker-armv7l.yml +# .gitlab-docker-arm64.yml +- .gitlab-docker-manifest.yml diff --git a/.gitlab-docker-manifest.yml b/.gitlab-docker-manifest.yml new file mode 100644 index 0000000..8b38379 --- /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}-arm64 ${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..77741bd --- /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 --build-arg HTTP_PROXY=http://proxy.dege.lan:3128 --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