diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7b15c5baa12d25ec0c190f84168b15083f807ffa..048afc17c3a891b3f84d45c1f5dd3004797eddbd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,12 +11,20 @@ clang-format:
     - git submodule update --init --depth 1 --recursive
     - bash .ci/scripts/format/script.sh
 
+cache:
+  paths:
+    - ccache/
+
 build-linux:
   stage: build
   image: suyuemu/cibuild:linux-x64
   resource_group: linux-ci
   variables:
     RELEASE_NAME: mainline
+  before_script:
+    - mkdir -p ccache
+    - export CCACHE_BASEDIR=${PWD}
+    - export CCACHE_DIR=${PWD}/ccache
   script:
     - git submodule update --init --depth 1 --recursive
     - bash .ci/scripts/linux/docker.sh