diff --git a/.gitlab/client.gitlab-ci.yml b/.gitlab/client.gitlab-ci.yml
index f73fe0009fd41aad2f5aafacf62160657aa26bc9..2125b6126083ff9a3b4480a7ab31aeb048f6d136 100644
--- a/.gitlab/client.gitlab-ci.yml
+++ b/.gitlab/client.gitlab-ci.yml
@@ -1,6 +1,12 @@
 client:setup:
   image: node:10
   stage: setup
+  only:
+    refs:
+      - dev
+      - merge_requests
+    changes:
+      - client/**/*
   script:
     - cd client
     - npm install
@@ -21,6 +27,12 @@ client:linting:
   image: node:10
   stage: test
   needs: ["client:setup"]
+  only:
+    refs:
+      - dev
+      - merge_requests
+    changes:
+      - server/**/*
   script:
     - cd client
     - npm run lint
@@ -29,8 +41,13 @@ client:test:
   image: node:10
   stage: test
   needs: ["client:setup"]
+  only:
+    refs:
+      - dev
+      - merge_requests
+    changes:
+      - server/**/*
   script:
     - cd client
     - npm run test:coverage
-
   coverage: /All files\s*\|\s*([\d\.]+)/
diff --git a/.gitlab/server.gitlab-ci.yml b/.gitlab/server.gitlab-ci.yml
index e2913efbe4a840ec373a0bac452e2785141a900b..5139e39813debc0536872cb6e044e0d2a28838f4 100644
--- a/.gitlab/server.gitlab-ci.yml
+++ b/.gitlab/server.gitlab-ci.yml
@@ -1,6 +1,12 @@
 server:setup:
   image: python
   stage: setup
+  only:
+    refs:
+      - dev
+      - merge_requests
+    changes:
+      - server/**/*
   artifacts:
     paths:
       - server/env
@@ -22,6 +28,12 @@ server:test:
   image: python
   stage: test
   needs: ["server:setup"]
+  only:
+    refs:
+      - dev
+      - merge_requests
+    changes:
+      - server/**/*
   script:
     - cd server
     - source env/bin/activate