diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c80360bb31e983a80f82df12a1b703096fd3a6ce..6b0cd8848b9a95d375ad85b47bdbf7aa36cd442b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,8 @@ stages:
   - revdepcheck
 
 variables:
-  R_LIBS_USER: "$CI_PROJECT_DIR/ci/lib"
+  R_CI: "$CI_PROJECT_DIR/ci"
+  R_LIBS_USER: "$R_CI/lib"
 
 default:
   tags: [docker]
@@ -12,7 +13,7 @@ default:
 cache:
   key: "airGR-${R_VERSION}"
   paths:
-    - $R_LIBS_USER
+    - $R_CI
 
 before_script:
   - mkdir -p $R_LIBS_USER
@@ -139,9 +140,14 @@ revdepcheck_devel:
       - schedule
       - master
   extends: .R-devel
+  variables:
+    CRANCACHE_DIR: "$R_CI/R-crancache"
+
   script:
     - R -q -e 'remotes::install_github("https://github.com/r-lib/revdepcheck")'
-    - R -q -e 'revdepcheck::revdep_check(timeout = as.difftime(20, units = "mins"))'
+    - R -q -e 'remotes::update_packages("crancache")'
+    - R -q -e 'library(crancache); remotes::update_packages(revdepcheck::cran_revdeps("airGR"))'
+    - R -q -e 'revdepcheck::revdep_check(timeout = as.difftime(30, units = "mins"))'
     - R -q -e 'stopifnot(all("+" == sapply(revdepcheck::revdep_summary(), "[[", "status")))'
     - R -q -e 'if (any(sapply(revdepcheck::revdep_summary(), function(x) {any(x$cmp$change == 1)}))) stop()'
   artifacts: