diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 95d719a251465aa53ac668f0707728b4d4cdc9a2..82776d33fba5f6662b06acbe93135510f205877e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,7 +1,7 @@
 stages:
   - checks
-  - tests
   - package
+  - tests
   - coverage
 
 variables:
@@ -81,22 +81,21 @@ tests-3.9:
   tags: [docker]
   image: docker:latest
   services:
-  - docker:dind
+    - docker:dind
   script:
-    - docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
-    - docker build --pull -t "$CI_REGISTRY_IMAGE:$IMAGE_TAG" .
-    - docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
+    - docker pull $CI_REGISTRY_IMAGE:$IMAGE_TAG || true
+    - docker build --cache-from $CI_REGISTRY_IMAGE:$IMAGE_TAG --pull -t "$CI_REGISTRY_IMAGE:$IMAGE_TAG" .
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
     - docker tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "$CI_REGISTRY_IMAGE:$IMAGE_TAG"
     - docker push "$CI_REGISTRY_IMAGE:$IMAGE_TAG"
     - docker tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "$CI_REGISTRY_IMAGE:latest"
     - docker push "$CI_REGISTRY_IMAGE:latest"
-
 container:
   extends: .container
   variables:
     IMAGE_TAG: "dev"
-  rules:
-    - when: manual
+#  rules:
+#    - when: manual
 
 pypi_test:
   stage: package