From b3d0bb0557347db4ac535c9bddafe58b73328516 Mon Sep 17 00:00:00 2001
From: Paolo Brasolin <paolo.brasolin@eurac.edu>
Date: Wed, 2 Mar 2022 13:21:07 +0100
Subject: [PATCH] ci: refactor job structure

---
 .gitlab-ci.yml | 72 ++++++++++++++++++++++++--------------------------
 1 file changed, 35 insertions(+), 37 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5d60159..040c516 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,12 +8,18 @@ stages:
   - build
   - deploy
 
-#==[ Prepare node ]=============================================================
+#==[ Node jobs templates ]======================================================
 
-.fe-node-job:
+.node-job: &node-job
   image: node:16-alpine
   tags:
     - shared
+  only:
+    - tags
+    - development
+
+.fe-node-job:
+  <<: *node-job
   cache:
     key:
       files:
@@ -23,14 +29,9 @@ stages:
   before_script:
     - cd frontend
     - npm ci --cache .npm --prefer-offline
-  only:
-    - tags
-    - development
 
 .be-node-job:
-  image: node:16-alpine
-  tags:
-    - shared
+  <<: *node-job
   cache:
     key:
       files:
@@ -40,17 +41,18 @@ stages:
   before_script:
     - cd backend
     - npm ci --cache .npm --prefer-offline
-  only:
-    - tags
-    - development
 
-fe-cache-node-job:
+#==[ Frontent cache ]===========================================================
+
+cache-fe-node-job:
   extends: .fe-node-job
   stage: setup
   script:
     - echo "Done!"
 
-be-cache-node-job:
+#==[ Backend cache ]============================================================
+
+cache-be-node-job:
   extends: .be-node-job
   stage: setup
   script:
@@ -58,51 +60,47 @@ be-cache-node-job:
 
 #==[ Frontend checks ]==========================================================
 
-fe-format-node-job:
+.check-fe-node-job: &check-fe-node-job
   extends: .fe-node-job
   stage: check
   needs:
-    - fe-cache-node-job
+    - cache-fe-node-job
+
+format-fe-node-job:
+  <<: *check-fe-node-job
   script:
     - npm run format:check
 
-fe-lint-node-job:
-  extends: .fe-node-job
-  stage: check
-  needs:
-    - fe-cache-node-job
+lint-fe-node-job:
+  <<: *check-fe-node-job
   script:
     - npm run lint:check
 
-fe-test-node-job:
-  extends: .fe-node-job
-  stage: check
-  needs:
-    - fe-cache-node-job
+test-fe-node-job:
+  <<: *check-fe-node-job
   script:
     - npm run test
 
-be-format-node-job:
+#==[ Backend checks ]===========================================================
+
+.check-be-node-job: &check-be-node-job
   extends: .be-node-job
   stage: check
   needs:
-    - be-cache-node-job
+    - cache-be-node-job
+
+format-be-node-job:
+  <<: *check-be-node-job
   script:
     - npm run format:check
 
-be-lint-node-job:
-  extends: .be-node-job
-  stage: check
-  needs:
-    - be-cache-node-job
+lint-be-node-job:
+  <<: *check-be-node-job
   script:
     - npm run lint:check
 
-be-test-node-job:
-  extends: .be-node-job
-  stage: check
-  needs:
-    - be-cache-node-job
+test-be-node-job:
+  <<: *check-be-node-job
   script:
     - npm run test
 
-- 
GitLab