diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b762d7b6fa2d106c1d249483aa07666c1bf7e247..e18d66540d593fa4fb74ea2c87b28b8a555a19f9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,6 +11,21 @@ include:
   - remote: |-
       https://git.shore.co.il/shore/ci-templates/-/raw/master/templates/notify.yml
 
+stages:
+  - build-base
+  - deploy-base
+  - build
+  - deploy
+  - test
+
+.container-build-base:
+  extends: .container-build
+  stage: build-base
+
+.container-push-base:
+  extends: .container-push
+  stage: deploy-base
+
 lint templates:
   image: registry.shore.co.il/ci-images:pre-commit
   stage: test
@@ -42,12 +57,12 @@ lint templates:
 # bats image:
 
 build-bats:
-  extends: .container-build
+  extends: .container-build-base
   variables:
     CONTEXT: images/bats
 
 push-bats:
-  extends: .container-push
+  extends: .container-push-base
   variables:
     CONTEXT: images/bats
     IMAGE: ci-images
@@ -59,12 +74,12 @@ push-bats:
 # docker image:
 
 build-docker:
-  extends: .container-build
+  extends: .container-build-base
   variables:
     CONTEXT: images/docker
 
 push-docker:
-  extends: .container-push
+  extends: .container-push-base
   variables:
     CONTEXT: images/docker
     IMAGE: ci-images
@@ -110,8 +125,6 @@ push-k8s:
 # pre-commit image:
 
 build-pre-commit:
-  needs:
-    - push-python3
   extends: .container-build
   variables:
     CONTEXT: images/pre-commit
@@ -129,12 +142,12 @@ push-pre-commit:
 # python3 image:
 
 build-python3:
-  extends: .container-build
+  extends: .container-build-base
   variables:
     CONTEXT: images/python3
 
 push-python3:
-  extends: .container-push
+  extends: .container-push-base
   variables:
     CONTEXT: images/python3
     IMAGE: ci-images