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