From 9992887113c76906cf164f7c72adcbb39d35fd99 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Tue, 22 Jun 2021 19:31:42 +0200 Subject: [PATCH] ci: Manually build multiarch image as we are dealing with a BASEimage here. Want to do things from ground up as possible. --- .gitlab-ci.yml | 137 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..9a733e5 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,137 @@ +stages: + - test + - release + - build + +test amd64: + image: docker:latest + stage: test + services: + - name: docker:dind + alias: docker + variables: + project_name: $CI_PROJECT_NAME + SEMANTIC_RELEASE_PACKAGE: $CI_PROJECT_NAME + before_script: + - docker login -u "$DOCKERHUB_USER" -p "$DOCKERHUB_TOKEN" docker.io + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + - docker build -t "$CI_REGISTRY_IMAGE:amd64-develop" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-develop" + --build-arg BUILD_DATE="$CI_PIPELINE_CREATED_AT" + --build-arg VERSION="$CI_COMMIT_SHORT_SHA" + --build-arg OVERLAY_ARCH="amd64" + --build-arg FETCH=amd64/ . + - docker push "$CI_REGISTRY_IMAGE:amd64-develop" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-develop" + - docker build -t "$CI_REGISTRY_IMAGE:armhf-develop" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-develop" + --build-arg BUILD_DATE="$CI_PIPELINE_CREATED_AT" + --build-arg VERSION="$CI_COMMIT_SHORT_SHA" + --build-arg OVERLAY_ARCH="arm" + --build-arg FETCH=armhf/ . + - docker push "$CI_REGISTRY_IMAGE:armhf-develop" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-develop" + - docker build -t "$CI_REGISTRY_IMAGE:arm64-develop" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-develop" + --build-arg BUILD_DATE="$CI_PIPELINE_CREATED_AT" + --build-arg VERSION="$CI_COMMIT_SHORT_SHA" + --build-arg OVERLAY_ARCH="aarch64" + --build-arg FETCH=arm64/ . + - docker push "$CI_REGISTRY_IMAGE:arm64-develop" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-develop" + - docker manifest create "$CI_REGISTRY_IMAGE:develop" + --amend "$CI_REGISTRY_IMAGE:amd64-develop" + --amend "$CI_REGISTRY_IMAGE:armhf-develop" + --amend "$CI_REGISTRY_IMAGE:arm64-develop" + - docker push "$CI_REGISTRY_IMAGE:develop" + - docker manifest create "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:develop" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-develop" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-develop" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-develop" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:develop" + except: + refs: + - tags + variables: + - $CI_COMMIT_TITLE =~ /^RELEASE:.+$/ + +release: + needs: ['test docker'] + stage: release + image: griefed/gitlab-semantic-release:latest + services: + - name: docker:dind + alias: docker + variables: + project_name: $CI_PROJECT_NAME + SEMANTIC_RELEASE_PACKAGE: $CI_PROJECT_NAME + script: + - npx semantic-release + only: + - master + except: + refs: + - tags + variables: + - $CI_COMMIT_TITLE =~ /^RELEASE:.+$/ + +build: + image: docker:latest + stage: build + services: + - name: docker:dind + alias: docker + variables: + project_name: $CI_PROJECT_NAME + SEMANTIC_RELEASE_PACKAGE: $CI_PROJECT_NAME + before_script: + - docker login -u "$DOCKERHUB_USER" -p "$DOCKERHUB_TOKEN" docker.io + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + - docker build -t "$CI_REGISTRY_IMAGE:amd64-latest" -t "$CI_REGISTRY_IMAGE:amd64-$CI_COMMIT_TAG" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-latest" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-$CI_COMMIT_TAG" + --build-arg BUILD_DATE="$CI_PIPELINE_CREATED_AT" + --build-arg VERSION="$CI_COMMIT_TAG" + --build-arg OVERLAY_ARCH="amd64" + --build-arg FETCH=amd64/ . + - docker push "$CI_REGISTRY_IMAGE:amd64-latest" + - docker push "$CI_REGISTRY_IMAGE:amd64-$CI_COMMIT_TAG" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-latest" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-$CI_COMMIT_TAG" + - docker build -t "$CI_REGISTRY_IMAGE:armhf-latest" -t "$CI_REGISTRY_IMAGE:armhf-$CI_COMMIT_TAG" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-latest" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-$CI_COMMIT_TAG" + --build-arg BUILD_DATE="$CI_PIPELINE_CREATED_AT" + --build-arg VERSION="$CI_COMMIT_TAG" + --build-arg OVERLAY_ARCH="arm" + --build-arg FETCH=armhf/ . + - docker push "$CI_REGISTRY_IMAGE:armhf-latest" + - docker push "$CI_REGISTRY_IMAGE:armhf-$CI_COMMIT_TAG" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-latest" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-$CI_COMMIT_TAG" + - docker build -t "$CI_REGISTRY_IMAGE:arm64-latest" -t "$CI_REGISTRY_IMAGE:arm64-$CI_COMMIT_TAG" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-latest" -t "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-$CI_COMMIT_TAG" + --build-arg BUILD_DATE="$CI_PIPELINE_CREATED_AT" + --build-arg VERSION="$CI_COMMIT_TAG" + --build-arg OVERLAY_ARCH="aarch64" + --build-arg FETCH=arm64/ . + - docker push "$CI_REGISTRY_IMAGE:arm64-latest" + - docker push "$CI_REGISTRY_IMAGE:arm64-$CI_COMMIT_TAG" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-latest" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-$CI_COMMIT_TAG" + - docker manifest create "$CI_REGISTRY_IMAGE:latest" + --amend "$CI_REGISTRY_IMAGE:amd64-latest" + --amend "$CI_REGISTRY_IMAGE:armhf-latest" + --amend "$CI_REGISTRY_IMAGE:arm64-latest" + - docker push "$CI_REGISTRY_IMAGE:latest" + - docker manifest create "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" + --amend "$CI_REGISTRY_IMAGE:amd64-$CI_COMMIT_TAG" + --amend "$CI_REGISTRY_IMAGE:armhf-$CI_COMMIT_TAG" + --amend "$CI_REGISTRY_IMAGE:arm64-$CI_COMMIT_TAG" + - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" + - docker manifest create "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:latest" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-latest" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-latest" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-latest" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:latest" + - docker manifest create "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:$CI_COMMIT_TAG" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:amd64-$CI_COMMIT_TAG" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:armhf-$CI_COMMIT_TAG" + --amend "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:arm64-$CI_COMMIT_TAG" + - docker push "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:$CI_COMMIT_TAG" + only: + - tags \ No newline at end of file -- GitLab