diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5438736cdbc48ef287b88e0de91b60392ab14b35..9391176fec789c22ff6e7d8c63589b1bc18b0ddc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,30 +13,34 @@ build-master:
   before_script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
   script:
-    - VERSION=`grep 'version="*"' core/Dockerfile | cut -d '"' -f2`
-    - IMAGE="$CI_REGISTRY_IMAGE/pvs_core"
-    - docker pull "$IMAGE":latest || true
-    - docker build --cache-from "$IMAGE":latest -t "$IMAGE":latest -t "$IMAGE":$VERSION core/
-    - docker push "$IMAGE":$VERSION
-    - docker push "$IMAGE":latest
-    - VERSION=`grep 'version="*"' preprocessor/Dockerfile | cut -d '"' -f2`
-    - IMAGE="$CI_REGISTRY_IMAGE/pvs_preprocessor"
-    - docker pull "$IMAGE":latest || true
-    - docker build --cache-from "$IMAGE":latest -t "$IMAGE":latest -t "$IMAGE":$VERSION preprocessor/
-    - docker push "$IMAGE":$VERSION
-    - docker push "$IMAGE":latest
-    - VERSION=`grep 'version="*"' client/Dockerfile | cut -d '"' -f2`
-    - IMAGE="$CI_REGISTRY_IMAGE/pvs_client"
-    - docker pull "$IMAGE":latest || true
-    - docker build --cache-from "$IMAGE":latest -t "$IMAGE":latest -t "$IMAGE":$VERSION client/
-    - docker push "$IMAGE":$VERSION
-    - docker push "$IMAGE":latest
-    - VERSION=`grep 'version="*"' cache/Dockerfile | cut -d '"' -f2`
-    - IMAGE="$CI_REGISTRY_IMAGE/pvs_cache"
-    - docker pull "$IMAGE":latest || true
-    - docker build --cache-from "$IMAGE":latest -t "$IMAGE":latest -t "$IMAGE":$VERSION cache/
-    - docker push "$IMAGE":$VERSION
-    - docker push "$IMAGE":latest
+    - VERSION_1=`grep 'version="*"' core/Dockerfile | cut -d '"' -f2`
+    - IMAGE_1="$CI_REGISTRY_IMAGE/pvs_core"
+    - docker pull "$IMAGE_1":latest || true
+    - docker build --cache-from "$IMAGE_1":latest -t "$IMAGE_1":latest -t "$IMAGE_1":$VERSION_1 core/
+    - VERSION_2=`grep 'version="*"' preprocessor/Dockerfile | cut -d '"' -f2`
+    - IMAGE_2="$CI_REGISTRY_IMAGE/pvs_preprocessor"
+    - docker pull "$IMAGE_2":latest || true
+    - docker build --cache-from "$IMAGE_2":latest -t "$IMAGE_2":latest -t "$IMAGE_2":$VERSION_2 preprocessor/
+    - VERSION_3=`grep 'version="*"' client/Dockerfile | cut -d '"' -f2`
+    - IMAGE_3="$CI_REGISTRY_IMAGE/pvs_client"
+    - docker pull "$IMAGE_3":latest || true
+    - docker build --cache-from "$IMAGE_3":latest -t "$IMAGE_3":latest -t "$IMAGE_3":$VERSION_3 client/
+    - VERSION_4=`grep 'version="*"' cache/Dockerfile | cut -d '"' -f2`
+    - IMAGE_4="$CI_REGISTRY_IMAGE/pvs_cache"
+    - docker pull "$IMAGE_4":latest || true
+    - docker build --cache-from "$IMAGE_4":latest -t "$IMAGE_4":latest -t "$IMAGE_4":$VERSION_4 cache/
+    - chmod +x gitlab_test.sh
+    - ./gitlab_test.sh
+    - docker push "$IMAGE_1":$VERSION_1
+    - docker push "$IMAGE_1":latest
+    - docker push "$IMAGE_2":$VERSION_2
+    - docker push "$IMAGE_2":latest
+    - docker push "$IMAGE_3":$VERSION_3
+    - docker push "$IMAGE_3":latest
+    - docker push "$IMAGE_4":$VERSION_4
+    - docker push "$IMAGE_4":latest
+    - chmod +x gitlab_test.sh
+    - ./gitlab_test.sh
   only:
     - master
 
@@ -51,15 +55,19 @@ build:
     - IMAGE="$CI_REGISTRY_IMAGE/pvs_core"
     - docker pull "$IMAGE":$CI_COMMIT_REF_NAME || true
     - docker build --cache-from "$IMAGE":$CI_COMMIT_REF_NAME -t "$IMAGE":$CI_COMMIT_REF_SLUG -t "$IMAGE":$CI_COMMIT_REF_NAME core/
+    - docker tag "$IMAGE:$CI_COMMIT_REF_NAME" "$IMAGE:latest"
     - IMAGE="$CI_REGISTRY_IMAGE/pvs_preprocessor"
     - docker pull "$IMAGE":$CI_COMMIT_REF_NAME || true
     - docker build --cache-from "$IMAGE":$CI_COMMIT_REF_NAME -t "$IMAGE":$CI_COMMIT_REF_SLUG -t "$IMAGE":$CI_COMMIT_REF_NAME preprocessor/
+    - docker tag "$IMAGE:$CI_COMMIT_REF_NAME" "$IMAGE:latest"
     - IMAGE="$CI_REGISTRY_IMAGE/pvs_client"
     - docker pull "$IMAGE":$CI_COMMIT_REF_NAME || true
     - docker build --cache-from "$IMAGE":$CI_COMMIT_REF_NAME -t "$IMAGE":$CI_COMMIT_REF_SLUG -t "$IMAGE":$CI_COMMIT_REF_NAME client/
+    - docker tag "$IMAGE:$CI_COMMIT_REF_NAME" "$IMAGE:latest"
     - IMAGE="$CI_REGISTRY_IMAGE/pvs_cache"
     - docker pull "$IMAGE":$CI_COMMIT_REF_NAME || true
     - docker build --cache-from "$IMAGE":$CI_COMMIT_REF_NAME -t "$IMAGE":$CI_COMMIT_REF_SLUG -t "$IMAGE":$CI_COMMIT_REF_NAME cache/
+    - docker tag "$IMAGE:$CI_COMMIT_REF_NAME" "$IMAGE:latest"
     - chmod +x gitlab_test.sh
     - ./gitlab_test.sh
     
diff --git a/gitlab_test.sh b/gitlab_test.sh
index 9d5d031badb732dfde29d343ef91d8adecbefdae..4cb103a5844084f0c557a86d6d592676a04a7e1e 100644
--- a/gitlab_test.sh
+++ b/gitlab_test.sh
@@ -1,8 +1,4 @@
 #!/bin/sh
-docker tag "$CI_REGISTRY_IMAGE/pvs_core:$CI_COMMIT_REF_NAME" "$CI_REGISTRY_IMAGE/pvs_core:latest"
-docker tag "$CI_REGISTRY_IMAGE/pvs_cache:$CI_COMMIT_REF_NAME" "$CI_REGISTRY_IMAGE/pvs_cache:latest"
-docker tag "$CI_REGISTRY_IMAGE/pvs_preprocessor:$CI_COMMIT_REF_NAME" "$CI_REGISTRY_IMAGE/pvs_preprocessor:latest"
-docker tag "$CI_REGISTRY_IMAGE/pvs_client:$CI_COMMIT_REF_NAME" "$CI_REGISTRY_IMAGE/pvs_client:latest"
 chmod +x env_setup.sh wait_for_container.sh
 ./env_setup.sh
 mkdir data