diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9ca3776ac951edaa9c79310f41ceaf394b768551..47cd628d74b0bf2779726b68d9fce0c98ab61bbb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -115,29 +115,15 @@ test-be-node-job:
 
 #--[ Frontend ]-----------------------------------------------------------------
 
-.fe-build-job:
-  image: node:16-alpine
+build-fe-node-job:
+  extends: .fe-node-job
   stage: build
-  tags:
-    - commul
-  cache:
-    - key:
-        files:
-          - frontend/package-lock.json
-      paths:
-        - frontend/node_modules
   script:
-    - cd frontend
-    - npm install
     - npm run build
   artifacts:
     paths:
       - frontend/dist/
-    # TODO: set expiration in docker registry too
     expire_in: 1 week
-  only:
-    - tags
-    - development
 
 #--[ Backend ]------------------------------------------------------------------
 
@@ -175,10 +161,10 @@ test-be-node-job:
   image: alpine:latest
   stage: deploy
   needs:
-    - job: fe-build-job
+    - job: build-fe-node-job
       artifacts: true
   tags:
-    - commul
+    - shared
   before_script:
     - ./ci/install-butler-on-alpine.sh
   script:
@@ -188,7 +174,7 @@ test-be-node-job:
       eurac/$GAME_NAME:html5
       --userversion ${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
 
-.fe-prd-deploy-job:
+prd-fe-deploy-job:
   extends: .fe-deploy-job
   environment:
     name: production/frontend
@@ -199,7 +185,7 @@ test-be-node-job:
   only:
     - tags
 
-.fe-stg-deploy-job:
+stg-fe-deploy-job:
   extends: .fe-deploy-job
   environment:
     name: staging/frontend