diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 00d3e8cb6517afc5ba03f28f6b3dedb3c214f064..fc19790f6e9f62fd149105cb44261849e5035ecd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,25 +9,27 @@ variables:
   LSAN_OPTIONS: "log_threads=1"
   ASAN_OPTIONS: "detect_leaks=0:detect_stack_use_after_return=1"
 
-# build:
-#   stage: build
-#   tags:
-#     - corsika
-#   script:
-#     - mkdir build
-#     - cd build
-#     - cmake .. -DCMAKE_BUILD_TYPE=Debug
-#     - cmake --build . -- -j4
-#     - ctest -j4 -V >& test.log || gzip -v -9 -S .gz test.log
-#   artifacts:
-#     expire_in: 1 year
-#     paths:
-#       - build/test.log.gz
-#     reports:
-#       junit:
-#         - build/test_outputs/junit*.xml
+build: # normal pipeline for each commit, except for commits to the master
+  stage: build
+  tags:
+    - corsika
+  script:
+    - mkdir build
+    - cd build
+    - cmake .. -DCMAKE_BUILD_TYPE=Debug
+    - cmake --build . -- -j4
+    - ctest -j4 -V >& test.log || gzip -v -9 -S .gz test.log
+  artifacts:
+    expire_in: 1 year
+    paths:
+      - build/test.log.gz
+    reports:
+      junit:
+        - build/test_outputs/junit*.xml
+  except:
+    - master
 
-coverage:
+coverage: # special pipeline for master with coverage report
   stage: build
   tags:
     - corsika
@@ -46,6 +48,8 @@ coverage:
     reports:
       junit:
         - build/test_outputs/junit*.xml
+  only:
+    - master
 
 pages:
   stage: build