From 1161b8d4ad68771b74281c22d5d516d51102bf72 Mon Sep 17 00:00:00 2001
From: nod_ <nod_@598310.no-reply.drupal.org>
Date: Wed, 7 Aug 2024 01:29:23 +0200
Subject: [PATCH] Issue #3463108 by catch, smustgrave: Use artifacts to share
 the eslint and styleint caches from core to MRs

(cherry picked from commit 5374786d8da638b55dc2e415d358febcc059c0a3)
---
 .gitlab-ci.yml                  | 25 +++++++++++++++++++++++--
 core/.gitignore                 |  6 ++++++
 core/misc/cspell/dictionary.txt |  2 ++
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b01c6a590be5..0a1510f847c0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -115,6 +115,18 @@ default:
   # exist.
   - 'curl --location --output core/.cspellcache "https://git.drupalcode.org/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/{$CACHE_TARGET}/raw/core/.cspellcache?job=Lint%20cache%20warming" || true'
 
+.eslint-cache: &eslint-cache
+  # Fetch the eslint cache from the artifacts of the latest successful job from
+  # the target branch. Allow the job to proceed and pass if the file doesn't
+  # exist.
+  - 'curl --location --output core/.eslintcache "https://git.drupalcode.org/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/{$CACHE_TARGET}/raw/core/.eslintcache?job=Lint%20cache%20warming" || true'
+
+.stylelint-cache: &stylelint-cache
+  # Fetch the stylelint cache from the artifacts of the latest successful job from
+  # the target branch. Allow the job to proceed and pass if the file doesn't
+  # exist.
+  - 'curl --location --output core/.stylelintcache "https://git.drupalcode.org/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/{$CACHE_TARGET}/raw/core/.stylelintcache?job=Lint%20cache%20warming" || true'
+
 .core-spellcheck: &core-spellcheck
   - cd core
   - corepack enable
@@ -271,14 +283,21 @@ default:
   script:
     - *phpstan-cache
     - *cspell-cache
+    - *eslint-cache
+    - *stylelint-cache
     - composer install
     - vendor/bin/phpstan --version
     - php vendor/bin/phpstan -vvv analyze --configuration=./core/phpstan.neon.dist
     - *core-spellcheck
+    - yarn run lint:core-js-passing --cache --cache-strategy content
+    - yarn run build:css --check
+    - yarn run lint:css --cache --cache-location .stylelintcache --cache-strategy content
   artifacts:
     paths:
       - core/phpstan-tmp/resultCache.php
       - core/.cspellcache
+      - core/.eslintcache
+      - core/.stylelintcache
 
 '🧹 PHP Static Analysis (phpstan)':
   <<: [ *default-job-settings-lint ]
@@ -357,11 +376,12 @@ default:
     - when: manual
       allow_failure: true
   script:
+    - *eslint-cache
     - cd core
     - corepack enable
     - yarn install
     - yarn run check:ckeditor5
-    - yarn run lint:core-js-passing --format gitlab
+    - yarn run lint:core-js-passing --cache --cache-strategy content --format gitlab
   artifacts:
     reports:
       codequality: eslint-quality-report.json
@@ -383,11 +403,12 @@ default:
     - when: manual
       allow_failure: true
   script:
+    - *stylelint-cache
     - corepack enable
     - cd core
     - yarn install
     - yarn run build:css --check
-    - yarn run lint:css --color --custom-formatter=node_modules/stylelint-formatter-gitlab
+    - yarn run lint:css --cache --cache-location .stylelintcache --cache-strategy content --color --custom-formatter=node_modules/stylelint-formatter-gitlab
   artifacts:
     reports:
       codequality: stylelint-quality-report.json
diff --git a/core/.gitignore b/core/.gitignore
index f6b3bbea0fe3..164465dc429a 100644
--- a/core/.gitignore
+++ b/core/.gitignore
@@ -29,3 +29,9 @@ nightwatch.settings.json
 
 # Ignore phpstan cache
 phpstan-tmp
+
+# Ignore eslint cache
+.eslintcache
+
+# Ignore stylelint cache
+.stylelint-cache
diff --git a/core/misc/cspell/dictionary.txt b/core/misc/cspell/dictionary.txt
index 232320fd0874..8b686e221347 100644
--- a/core/misc/cspell/dictionary.txt
+++ b/core/misc/cspell/dictionary.txt
@@ -213,6 +213,7 @@ endtrans
 enoki
 entityviewedit
 errmode
+eslintcache
 etag
 eurozone
 evenodd
@@ -588,6 +589,7 @@ strs
 sttid
 styleguide
 stylelint
+stylelintcache
 stylescombo
 subarrays
 subchild
-- 
GitLab