From 1fc7b1ac6460c72e53b386b456997a9aa84ece35 Mon Sep 17 00:00:00 2001
From: Pytgaen <32298455+pytgaen@users.noreply.github.com>
Date: Tue, 28 May 2024 19:47:22 +0200
Subject: [PATCH] fix: npm cache and add yq cache

---
 templates/gitlab-ci-semrel.yml | 30 +++++++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/templates/gitlab-ci-semrel.yml b/templates/gitlab-ci-semrel.yml
index 94f1d14..83af81f 100644
--- a/templates/gitlab-ci-semrel.yml
+++ b/templates/gitlab-ci-semrel.yml
@@ -611,10 +611,20 @@ stages:
       yq_version=$(github_get_latest_version mikefarah/yq)
       yq_binary=yq_linux_amd64
       yq_url="https://github.com/mikefarah/yq/releases/download/${yq_version}/${yq_binary}.tar.gz"
-      log_info "Download latest yq version: \\e[32m$yq_url\\e[0m"
-      download_file "${yq_url}" "${yq_binary}.tar.gz"
-      tar xvf "${yq_binary}.tar.gz"
-      mv "${yq_binary}" /usr/bin/yq
+      yq_cache="$XDG_CACHE_HOME/yq-$(echo "$yq_url" | md5sum | cut -d" " -f1)"
+
+      if [[ -f "$yq_cache" ]]
+      then
+        log_info "yq found in cache: reuse"
+      else
+        log_info "yq not found in cache: download"
+        log_info "Download latest yq version: \\e[32m$yq_url\\e[0m"
+        download_file "${yq_url}" "${yq_binary}.tar.gz"
+        tar xvf "${yq_binary}.tar.gz"
+        mkdir -p "$XDG_CACHE_HOME"
+        mv "${yq_binary}" "$yq_cache"
+      fi 
+      ln -s "$yq_cache" /usr/bin/yq
     fi
   }
 
@@ -745,11 +755,21 @@ stages:
     - cd "${SEMREL_CONFIG_DIR}"
     - prepare_semantic_release
     - install_semantic_release_plugins
+  variables:
+    # download cache
+    XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache"
+    # NPM cache
+    npm_config_cache: "$CI_PROJECT_DIR/.npm"
+  # Cache downloaded dependencies and plugins between builds.
+  # To keep cache across branches add 'key: "$CI_JOB_NAME"'
   cache:
     # cache shall be per branch per template
     key: "$CI_COMMIT_REF_SLUG-SEMREL"
+    when: always
     paths:
-      - .npm/
+      - "$CI_PROJECT_DIR/.npm"
+      - "$XDG_CACHE_HOME"
+
 
 semantic-release-info:
   extends: .semrel-base
-- 
GitLab