diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 54cdae77206c0a4de689ff246c7c362edd4bb269..06067677ccf710b4ab3999060794b687b84782b8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -36,6 +36,9 @@ stages:
 
 build:
   services:
+  only:
+    changes:
+      - Dockerfile
 
 # Prepares the secret files that we cannot or don't want to share with public
 prepare_secrets_master:
@@ -125,6 +128,11 @@ prepare_node:
   only:
     - branches
     - tags
+    changes:
+      - resources/js/**/*
+      - webpack.mix.js
+      - package.json
+      - package-lock.json
 
 prepare_composer:
   stage: prepare
@@ -138,6 +146,9 @@ prepare_composer:
     key: "composer-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
     paths:
       - vendor
+  only:
+    changes:
+      - composer.json
 
 review:
   variables: