diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0c67877042e60af057d2af0c7aedcab19b15e9aa..498597fb11be8c431a8efee24d4e08749af44af1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -43,11 +43,16 @@ build-my-r-base:
   script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
     # pull the previous stage
-    - docker pull "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/my-base:$CI_COMMIT_SHA"
+    - docker pull "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/my-base:latest"
     # pull the latest build of the target R version in order to re-use it
     - docker pull "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$R_VERSION" || true
+    # pull the latest build of the target R version in order to re-use it
+    - docker pull "$CI_REGISTRY_IMAGE:$R_VERSION" || true
     # building
     - docker build
+      --cache-from "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/my-base:latest"
+      --cache-from "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$R_VERSION"
+      --cache-from "$CI_REGISTRY_IMAGE:$R_VERSION"
       --build-arg R_VERSION
       --tag "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${STAGE_NAME}/${R_VERSION}:$CI_COMMIT_SHA"
       --file Dockerfile