diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 80479e9a52..4ad2f13bc9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,22 +1,20 @@
-#cache:
-#  paths:
-#    - target/
-
 stages:
   - build
   - test
-  - deploy
-  - post-run
+  - post-build
+  - executable
 
 # our own git fetch command like https://gitlab.com/gitlab-org/gitlab-runner/blob/master/shells/abstract.go
 # speeds up building because we skip the git clean and dont need any gitlab caches
 variables:
   GIT_STRATEGY: none
 before_script:
+  - mkdir -p /cache/veloren
+  - cd /cache/veloren
   - if [ -d .git ]; then
        echo "is git dir";
     else
-       git clone $CI_REPOSITORY_URL . ;
+      git clone $CI_REPOSITORY_URL . ;
     fi;
   - rm -f .git/index.lock
   - rm -f .git/shallow.lock
@@ -26,207 +24,197 @@ before_script:
   - git fetch origin --prune +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/*
   - git checkout -f -q $CI_COMMIT_SHA
   - if [ ! -z "${SOURCE_PROJECT}" -a "${SOURCE_PROJECT}" != " " ]; then
-        echo "THIS SEEMS TO BE A MERGE PIPELINE FROM ${SOURCE_PROJECT}/${SOURCE_BRANCH}";
-        git pull "https://gitlab.com/${SOURCE_PROJECT}/veloren.git" "${SOURCE_BRANCH}";
+      echo "THIS SEEMS TO BE A MERGE PIPELINE FROM ${SOURCE_PROJECT}/${SOURCE_BRANCH}";
+      git pull "https://gitlab.com/${SOURCE_PROJECT}/veloren.git" "${SOURCE_BRANCH}";
     fi;
-  - git submodule update --init --recursive
+  - git submodule sync --recursive
+  - git submodule update  --remote --recursive
   - git status
   - if [ -d target ]; then
-       ls -la target;
+      ls -la target;
     fi;
-#  - git submodule update --init --recursive
 
-clean-code:
-  stage: build
-  script:
-    - rustup component add rustfmt-preview
-    - cargo fmt --all -- --check
-  allow_failure: true
+#############
+# BUILD
+#############
 
 build-voxygen:
   stage: build
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
   script:
     - (cd voxygen && cargo build)
 
 build-server-cli:
   stage: build
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
   script:
     - (cd server-cli && cargo build)
 
+#############
+# TEST
+#############
+
 unittests:
   stage: test
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
   script:
     - cargo test
 
-#benchmarktests:
-#  stage: test
-#  script:
-#    - cargo bench
+benchmarktests:
+  stage: test
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
+  script:
+    - cargo bench
+  allow_failure: true
 
-nightly-linux-debug:
-  stage: deploy
+
+#############
+# POST-BUILD
+#############
+
+clean-code:
+  stage: post-build
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
+  script:
+    - cargo fmt --all -- --check
+  allow_failure: true  
+
+coverage:
+  stage: post-build
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
+  script:
+    - cargo tarpaulin --skip-clean --all || echo "There is a problem in tarpaulin which sometimes fails"
+  allow_failure: true
+
+clippy:
+  stage: post-build
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
+  script:
+    - cargo clippy --all -- -D clippy || echo "This job is disabled, because we are not activly using it now, so we dont want to see yellow failed partly"
+  allow_failure: true
+
+#############
+# Commit build
+#############
+
+commit-linux-debug:
+  stage: executable
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
   script:
     - (cd voxygen && VELOREN_ASSETS=assets cargo build)
     - (cd server-cli && VELOREN_ASSETS=assets cargo build)
-    - rm -r -f nightly
-    - mkdir nightly
-    - cp target/debug/veloren-server-cli nightly
-    - cp target/debug/veloren-voxygen nightly
-    - cp -r assets nightly/
-    - cp -r voxygen/shaders nightly/
-    - rm -f nightly-linux-debug.tar.bz2
-    - tar -cvjSf nightly-linux-debug.tar.bz2 nightly
-  when: always
+    - rm -r -f commit-build
+    - mkdir commit-build
+    - cp target/debug/veloren-server-cli commit-build
+    - cp target/debug/veloren-voxygen commit-build
+    - cp -r assets commit-build/
+    - cp -r voxygen/shaders commit-build/
+    - rm -f commit-linux-debug.tar.bz2
+    - tar -cvjSf commit-linux-debug.tar.bz2 commit-build
+    - cp commit-linux-debug.tar.bz2 $CI_PROJECT_DIR
   artifacts:
     paths:
-      - nightly-linux-debug.tar.bz2
+      - commit-linux-debug.tar.bz2
     expire_in: 1 week
+  except:
+    - schedules
   only:
     refs:
       - master
+      - add-docker-gitlab-ci
 
-nightly-windows-debug:
-  stage: deploy
+commit-windows-debug:
+  stage: executable
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
   script:
     - (cd voxygen && VELOREN_ASSETS=assets cargo build --target=x86_64-pc-windows-gnu)
     - (cd server-cli && VELOREN_ASSETS=assets cargo build --target=x86_64-pc-windows-gnu)
-    - rm -r -f nightly
-    - mkdir nightly
-    - cp target/x86_64-pc-windows-gnu/debug/veloren-server-cli.exe nightly
-    - cp target/x86_64-pc-windows-gnu/debug/veloren-voxygen.exe nightly
-    - cp -r assets nightly/
-    - cp -r voxygen/shaders nightly/
-    - rm -f nightly-windows-debug.zip
-    - zip -r nightly-windows-debug.zip nightly
+    - rm -r -f commit-build
+    - mkdir commit-build
+    - cp target/x86_64-pc-windows-gnu/debug/veloren-server-cli.exe commit-build
+    - cp target/x86_64-pc-windows-gnu/debug/veloren-voxygen.exe commit-build
+    - cp -r assets commit-build/
+    - cp -r voxygen/shaders commit-build/
+    - rm -f commit-windows-debug.zip
+    - zip -r commit-windows-debug.zip commit-build
+    - cp commit-windows-debug.zip $CI_PROJECT_DIR
   artifacts:
     paths:
-      - nightly-windows-debug.zip
+      - commit-windows-debug.zip
     expire_in: 1 week
+  except:
+    - schedules
   only:
     refs:
       - master
+      - add-docker-gitlab-ci
+
+#############
+# NIGHTLY
+#############
 
 nightly-linux-optimized:
-  stage: deploy
+  stage: executable
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
   script:
     - (cd voxygen && VELOREN_ASSETS=assets cargo build --release)
     - (cd server-cli && VELOREN_ASSETS=assets cargo build --release)
-    - rm -r -f nightly
-    - mkdir nightly
-    - cp target/release/veloren-server-cli nightly
-    - cp target/release/veloren-voxygen nightly
-    - cp -r assets nightly/
-    - cp -r voxygen/shaders nightly/
+    - rm -r -f nightly-build
+    - mkdir nightly-build
+    - cp target/release/veloren-server-cli nightly-build
+    - cp target/release/veloren-voxygen nightly-build
+    - cp -r assets nightly-build/
+    - cp -r voxygen/shaders nightly-build/
     - rm -f nightly-linux-optimized.tar.bz2
-    - tar -cvjSf nightly-linux-optimized.tar.bz2 nightly
-  when: manual
+    - tar -cvjSf nightly-linux-optimized.tar.bz2 nightly-build
+    - cp nightly-linux-optimized.zip $CI_PROJECT_DIR
   artifacts:
     paths:
       - nightly-linux-optimized.tar.bz2
     expire_in: 2 days
   only:
-    refs:
-      - master
+    - schedules
 
 nightly-windows-optimized:
-  stage: deploy
+  stage: executable
+  image: registry.gitlab.com/veloren/veloren-docker-ci
+  tags:
+    - docker
   script:
     - (cd voxygen && VELOREN_ASSETS=assets cargo build --release --target=x86_64-pc-windows-gnu)
     - (cd server-cli && VELOREN_ASSETS=assets cargo build --release --target=x86_64-pc-windows-gnu)
-    - rm -r -f nightly
-    - mkdir nightly
-    - cp target/x86_64-pc-windows-gnu/release/veloren-server-cli.exe nightly
-    - cp target/x86_64-pc-windows-gnu/release/veloren-voxygen.exe nightly
-    - cp -r assets nightly/
-    - cp -r voxygen/shaders nightly/
+    - rm -r -f nightly-build
+    - mkdir nightly-build
+    - cp target/x86_64-pc-windows-gnu/release/veloren-server-cli.exe nightly-build
+    - cp target/x86_64-pc-windows-gnu/release/veloren-voxygen.exe nightly-build
+    - cp -r assets nightly-build/
+    - cp -r voxygen/shaders nightly-build/
     - rm -f nightly-windows-optimized.zip
-    - zip -r nightly-windows-optimized.zip nightly
-  when: manual
+    - zip -r nightly-windows-optimized.zip nightly-build
+    - cp nightly-windows-optimized.zip $CI_PROJECT_DIR
   artifacts:
     paths:
       - nightly-windows-optimized.zip
     expire_in: 2 days
   only:
-    refs:
-      - master
-
-stable-linux-optimized:
-  stage: deploy
-  script:
-    - (cd voxygen && VELOREN_ASSETS=assets cargo build --release)
-    - (cd server-cli && VELOREN_ASSETS=assets cargo build --release)
-    - rm -r -f stable
-    - mkdir stable
-    - cp target/release/veloren-server-cli stable
-    - cp target/release/veloren-voxygen stable
-    - cp -r assets nightly/
-    - cp -r voxygen/shaders nightly/
-    - rm -f stable-linux-optimized.tar.bz2
-    - tar -cvjSf stable-linux-optimized.tar.bz2 stable
-  artifacts:
-    paths:
-      - stable-linux-optimized.tar.bz2
-    expire_in: 30d
-  only:
-    refs:
-      - /^v[0-9]+\.[0-9]+\.[0-9]+/
-
-stable-windows-optimized:
-  stage: deploy
-  script:
-    - (cd voxygen && VELOREN_ASSETS=assets cargo build --release --target=x86_64-pc-windows-gnu)
-    - (cd server-cli && VELOREN_ASSETS=assets cargo build --release --target=x86_64-pc-windows-gnu)
-    - rm -r -f stable
-    - mkdir stable
-    - cp target/x86_64-pc-windows-gnu/release/veloren-server-cli.exe stable
-    - cp target/x86_64-pc-windows-gnu/release/veloren-voxygen.exe stable
-    - cp -r assets nightly/
-    - cp -r voxygen/shaders nightly/
-    - rm -f stable-windows-optimized.zip
-    - zip -r stable-windows-optimized.zip stable
-  artifacts:
-    paths:
-      - stable-windows-optimized.zip
-    expire_in: 30d
-  only:
-    refs:
-      - /^v[0-9]+\.[0-9]+\.[0-9]+/
-
-# nightly-windows-release:
-#   stage: deploy
-#   script:
-#     - (cd voxygen && VELOREN_ASSETS=assets cargo build --release --target=x86_64-pc-windows-gnu)
-#     - (cd server-cli && VELOREN_ASSETS=assets cargo build --release --target=x86_64-pc-windows-gnu)
-#     - rm -r -f nightly
-#     - mkdir nightly
-#     - cp target/x86_64-pc-windows-gnu/debug/veloren-server-cli.exe nightly
-#     - cp target/x86_64-pc-windows-gnu/debug/veloren-voxygen.exe nightly
-#     - cp -r assets nightly/
-#     - cp -r voxygen/shaders nightly/
-#     - cp -r voxygen/fonts nightly/
-#     - rm -f nightly-windows-release.zip
-#     - zip -r nightly-windows-release.zip nightly
-#   artifacts:
-#     paths:
-#       - nightly-windows-release.zip
-#     expire_in: 1 week
-#   only:
-#     refs:
-#       - master
-
-coverage:
-  stage: post-run
-  script:
-    - if cargo install --list | grep -i "cargo-tarpaulin"; then
-        echo "tarpaulin already installed";
-      else
-        RUSTFLAGS="--cfg procmacro2_semver_exempt" cargo install cargo-tarpaulin;
-      fi
-    - cargo tarpaulin --skip-clean --all || echo "There is a problem in tarpaulin which sometimes fails"
-
-clippy:
-  stage: post-run
-  script:
-    - rustup component add clippy-preview --toolchain=nightly
-    - cargo clippy --all -- -D clippy || echo "This job is disabled, because we are not activly using it now, so we dont want to see yellow failed partly"
-  allow_failure: true
+    - schedules