diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4a37b51d36fccb62ecfdb206731cdccba2ea09c6..4e9149151962bccd50484803063cd58eb4df1e1d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,7 @@ image: docker:24
 
 
 
-build:
+.build:
   stage: build
   before_script:
     - i=0; while [ "$i" -lt 60 ]; do docker info && break; sleep 1; i=$(( i + 1 )) ; done
@@ -60,6 +60,25 @@ build:
         # push image tagged with its versions
         docker push "$CI_REGISTRY_IMAGE/${LANGUAGE}:$VERSIONS_TAG"
       fi
+
+
+
+build_python:
+  extends: .build
+  parallel:
+    matrix:        
+      - LANGUAGE: ["python"]
+        PYTHON_VERSION: [
+          "3.9-slim-bullseye",
+          "3.10-slim-bullseye",
+          "3.11-slim-bullseye",
+        ]
+        SHINY_SERVER_VERSION: ["latest"]
+
+
+
+build_r:
+  extends: .build
   parallel:
     matrix:
       - LANGUAGE: ["r"]
@@ -69,19 +88,11 @@ build:
            "4.2.3", 
         ]
         SHINY_SERVER_VERSION: ["latest"]
-        
-      - LANGUAGE: ["python"]
-        PYTHON_VERSION: [
-          "3.9-slim-bullseye",
-          "3.10-slim-bullseye",
-          "3.11-slim-bullseye",
-        ]
-        SHINY_SERVER_VERSION: ["latest"]
 
 
 
 trigger_r_example:
-  needs: ["build"]
+  needs: ["build_r"]
   trigger:
     project: hub/shiny-k8s-example
     branch: base-r
@@ -89,7 +100,7 @@ trigger_r_example:
 
 
 trigger_python_example:
-  needs: ["build"]
+  needs: ["build_python"]
   trigger:
     project: hub/shiny-k8s-example
     branch: base-python