From a12955236f4f2a0f1a44ecd536c8b2fc9c695bb0 Mon Sep 17 00:00:00 2001
From: Fijxu <fijxu@nadeko.net>
Date: Sat, 16 Mar 2024 19:08:22 -0300
Subject: [PATCH] feature: Store CCACHE cache in CI cache

---
 .ci/scripts/linux/docker.sh |  2 ++
 .gitlab-ci.yml              | 61 +++++++++++++++++++++++++++++++++++--
 2 files changed, 61 insertions(+), 2 deletions(-)

diff --git a/.ci/scripts/linux/docker.sh b/.ci/scripts/linux/docker.sh
index c6b6590db2..8e80878434 100755
--- a/.ci/scripts/linux/docker.sh
+++ b/.ci/scripts/linux/docker.sh
@@ -11,6 +11,8 @@ ccache -s
 mkdir build || true && cd build
 cmake .. \
       -DBoost_USE_STATIC_LIBS=ON \
+			-DSUYU_USE_PRECOMPILED_HEADERS=OFF \
+			-DDYNARMIC_USE_PRECOMPILED_HEADERS=OFF \
       -DCMAKE_BUILD_TYPE=RelWithDebInfo \
       -DCMAKE_CXX_FLAGS="-march=x86-64-v2" \
       -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ \
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 353d56b6fd..0a251e87b9 100755
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,64 @@
 stages:
+  - format
   - build
 
+variables:
+  # https://docs.gitlab.com/ee/ci/runners/configure_runners.html
+  TRANSFER_METER_FREQUENCY: "2s"
+  ARTIFACT_COMPRESSION_LEVEL: "fast"
+  CACHE_COMPRESSION_LEVEL: "fastest"
+  CACHE_REQUEST_TIMEOUT: 5
+  # Use FASTZIP for faster compression in cache and artifacts 
+  # https://docs.gitlab.com/runner/configuration/feature-flags.html#available-feature-flags
+  FF_USE_FASTZIP: true
+  
+  # Our Variables
+  CACHE_DIR: "$CI_PROJECT_DIR/ccache"
+  CCACHE_DIR: $CACHE_DIR
+
+
+#CLANG FORMAT - CHECKS CODE FOR FORMATTING ISSUES
+clang-format:
+  stage: format
+  image: suyuemu/cibuild:clangformat
+  #THIS HAS TO BE FALSE. IT KEEPS RESOURCES AVAILABLE - EG RUNNERS WONT TRY BUILDING IF CODEBASE IS WRONG
+  #MR's NEED TO BE CORRECTLY CLANG FORMATTED
+  allow_failure: false
+  script:
+    - git submodule update --init --depth 1 --recursive
+    - bash .ci/scripts/format/script.sh
+  tags:
+  #  - Linux
+  #  - Windows
+    - Parallelized
+
+#LINUX BUILD - BUILDS LINUX APPIMAGE
+build-linux:
+  stage: build
+  image: suyuemu/cibuild:linux-x64
+  resource_group: linux-ci
+  cache:
+    key: "$CI_COMMIT_REF_NAME-ccache"
+    paths:
+      - $CACHE_DIR
+  before_script:
+    - mkdir -p $CACHE_DIR
+    - chmod -R 777 $CACHE_DIR
+    - ls -la $CACHE_DIR
+  variables:
+    GIT_SUBMODULE_STRATEGY: recursive
+    GIT_SUBMODULE_DEPTH: 1
+    RELEASE_NAME: mainline  
+  script:
+    - bash .ci/scripts/linux/docker.sh
+    - bash .ci/scripts/linux/upload.sh
+  artifacts:
+    paths:
+      - artifacts/*
+  tags:
+    - Linux
+    - Parallelized
+
 #ANDROID BUILD - BUILDS APK
 android:
   stage: build
@@ -21,5 +79,4 @@ android:
   tags:
     - Linux
     - Parallelized
-    - Testing
-    - Fijxu
+
-- 
GitLab