diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..9a733e5e3ca2cb1cadc2693e3d00c9194abcd6bc --- /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