diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0f032d6c78237334c350466121e236a4b9a21238..a2425790bf350e864514d46f6c1519d27c258900 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,6 +22,8 @@ dependencies:
 
 lint-commit-msg:
   stage: quality
+  cache:
+    key: ${CI_COMMIT_REF_SLUG}
   script:
     - chmod +x ./scripts/lint-commit.sh
     # lint commit message
@@ -29,6 +31,8 @@ lint-commit-msg:
 
 lint-php:
   stage: quality
+  cache:
+    key: ${CI_COMMIT_REF_SLUG}
   script:
     # check php code style
     - vendor/bin/ecs check --ansi
@@ -39,6 +43,8 @@ lint-php:
 
 lint-js:
   stage: quality
+  cache:
+    key: ${CI_COMMIT_REF_SLUG}
   script:
     - npm run prettier
     - npm run typecheck
@@ -47,6 +53,8 @@ lint-js:
 
 tests:
   stage: quality
+  cache:
+    key: ${CI_COMMIT_REF_SLUG}
   script:
     # run phpunit without code coverage
     # TODO: add code coverage
@@ -54,6 +62,8 @@ tests:
 
 bundle:
   stage: bundle
+  cache:
+    key: ${CI_COMMIT_REF_SLUG}
   script:
     # make scripts/bundle.sh executable
     - chmod +x ./scripts/bundle-prepare.sh
@@ -73,6 +83,8 @@ bundle:
 
 release:
   stage: release
+  cache:
+    key: ${CI_COMMIT_REF_SLUG}
   script:
     # make release scripts executable
     - chmod +x ./scripts/bundle-prepare.sh