diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ca7e00fea5936ed12f165d9c55dec6c889ccfcd2..ee5cb0a361f537ecfd6425fa02fe71fcf566e163 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,9 +10,7 @@ variables:
 # normal multi-step pipeline for each commit
 stages:
   - config
-  - build
-  - test
-  - release
+  - build_test
   - optional
 
 # job/stage to just prepare cmake
@@ -46,76 +44,50 @@ config-clang-8:
        - build
 
 # normal pipeline for each commit
-build-u-18_04: 
+build-test-u-18_04: 
   image: corsika/devel:u-18.04
   dependencies:
     - config-u-18_04
-  stage: build
+  stage: build_test
   tags:
     - corsika
   script:
     - cd build
     - cmake --build . -- -j4
-  artifacts:
-    expire_in: 1 day
-    paths:
-       - build
-
-# normal pipeline for each commit
-build-clang-8: 
-  image: corsika/devel:clang-8
-  dependencies:
-    - config-clang-8
-  stage: build
-  tags:
-    - corsika
-  script:
-    - cd build
-    - cmake --build . -- -j4
-  artifacts:
-    expire_in: 1 day
-    paths:
-       - build
-
-test-u-18_04: 
-  image: corsika/devel:u-18.04
-  dependencies:
-    - build-u-18_04
-  stage: test
-  tags:
-    - corsika
-  script:
     - set -o pipefail
-    - cd build
     - ctest -VV | gzip -v -9 > test.log.gz 
   artifacts:
-    expire_in: 3 months
+    when: always
+    expire_in: 1 week
     reports:
       junit:
         - build/test_outputs/junit*.xml
     paths:
       - build/test.log.gz
 
-test-clang-8: 
+# normal pipeline for each commit
+build-test-clang-8: 
   image: corsika/devel:clang-8
   dependencies:
-    - build-clang-8
-  stage: test
+    - config-clang-8
+  stage: build_test
   tags:
     - corsika
   script:
-    - set -o pipefail
     - cd build
+    - cmake --build . -- -j4
+    - set -o pipefail
     - ctest -VV | gzip -v -9 > test.log.gz 
   artifacts:
-    expire_in: 3 months
+    when: always
+    expire_in: 1 week
     reports:
       junit:
         - build/test_outputs/junit*.xml
     paths:
       - build/test.log.gz
-
-# normal pipeline for each commit
+ 
+# optional release pipeline for each commit
 release-u-18_04: 
   image: corsika/devel:u-18.04
   dependencies:
@@ -127,10 +99,19 @@ release-u-18_04:
     - cd build
     - cmake .. -DCMAKE_BUILD_TYPE=Release
     - cmake --build . -- -j4
-    - ctest -j4 
+    - set -o pipefail
+    - ctest -VV | gzip -v -9 > test.log.gz 
+  artifacts:
+    when: always
+    expire_in: 1 week
+    reports:
+      junit:
+        - build/test_outputs/junit*.xml
+    paths:
+      - build/test.log.gz
   when: manual    
 
-# normal pipeline for each commit
+# optional release pipeline for each commit
 release-clang-8: 
   image: corsika/devel:clang-8
   dependencies:
@@ -142,7 +123,16 @@ release-clang-8:
     - cd build
     - cmake .. -DCMAKE_BUILD_TYPE=Release
     - cmake --build . -- -j4
-    - ctest -j4 
+    - set -o pipefail
+    - ctest -VV | gzip -v -9 > test.log.gz 
+  artifacts:
+    when: always
+    expire_in: 1 week
+    reports:
+      junit:
+        - build/test_outputs/junit*.xml
+    paths:
+      - build/test.log.gz
   when: manual    
 
 # the coverage generation should either run when manually requested, OR for all changes on the master
@@ -182,7 +172,7 @@ coverage_master: # special job to run on master banch changes
 documentation:
   image: corsika/devel:u-18.04
   dependencies:
-    - build-u-18_04
+    - config-u-18_04
   stage: optional
   tags:
     - corsika
@@ -193,7 +183,7 @@ documentation:
     - cp -r Documentation/Doxygen/html .public/
     - mv .public ../public
   artifacts:
-    expire_in: 3 months
+    expire_in: 3 weeks
     paths:
       - public
   when: manual