diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ef2b2562b2e2af86ae15e0c09d5bad29b50f0e0d..55c29c14a8ddc1e4361d92de7832de1afb43379c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -145,6 +145,8 @@ lint-open-api-version:
 build-metadata-service:
   image: maven:3-openjdk-${JAVA_VERSION}
   stage: build
+  only:
+    - merge_requests
   script:
     - "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS -DskipTests"
   # Compiled classes are needed for SonarQube in later stages
@@ -172,6 +174,8 @@ build-analyse-service:
 build-lib:
   image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
   stage: build
+  only:
+    - merge_requests
   variables:
     PIPENV_PIPFILE: "./lib/python/Pipfile"
   script:
@@ -181,6 +185,8 @@ build-lib:
 build-data-service:
   image: maven:3-openjdk-${JAVA_VERSION}
   stage: build
+  only:
+    - merge_requests
   needs:
     - build-metadata-service
   dependencies:
@@ -201,12 +207,16 @@ build-data-service:
 build-ui:
   image: oven/bun:${BUN_VERSION}-alpine
   stage: build
+  only:
+    - merge_requests
   script:
     - "cd ./dbrepo-ui && bun install && bun run build"
 
 build-search-service:
   image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
   stage: build
+  only:
+    - merge_requests
   before_script:
     - "pip install pipenv"
   script:
@@ -215,6 +225,8 @@ build-search-service:
 build-images:
   image: docker.io/docker:${DOCKER_VERSION}-dind
   stage: build
+  only:
+    - merge_requests
   before_script:
     - "apk add --no-cache make"
     - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL
@@ -224,6 +236,8 @@ build-images:
 build-helm:
   image: docker.io/docker:${DOCKER_VERSION}-dind
   stage: build
+  only:
+    - merge_requests
   before_script:
     - apk add --no-cache helm make
     - echo "$CI_GPG_KEYRING" | base64 -d > ./secring.gpg