diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index af25bc5a3406a4bc734458b32e715095915f2b71..1c9874c53ce7ace194a0c37b589b2c2bd5429e08 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -110,6 +110,32 @@ workflow:
     reports:
       dotenv: image.env
 
+build_http_proxy_image:
+  stage: build
+  environment:
+    name: $ENV
+  tags:
+    - build
+  variables:
+    PROXY_ENABLE_VAR: "enable_http_proxy"
+  <<: *build_proxy_image_template
+  rules:
+    - if: $PIPELINE_TARGET == "build" && $BUILD_TARGET == "http-proxy"
+      when: always
+
+build_ssh_proxy_image:
+  stage: build
+  environment:
+    name: $ENV
+  tags:
+    - build
+  variables:
+    PROXY_ENABLE_VAR: "enable_ssh_proxy"
+  <<: *build_proxy_image_template
+  rules:
+    - if: $PIPELINE_TARGET == "build" && $BUILD_TARGET == "ssh-proxy"
+      when: always
+
 .build_compute_image_template: &build_compute_image_template
   script:
     - *update_ansible_repo
@@ -149,67 +175,6 @@ build_compute_image:
     - if: $PIPELINE_TARGET == "build" && $BUILD_TARGET == "compute"
       when: always
 
-build_http_proxy_image:
-  stage: build
-  environment:
-    name: $ENV
-  tags:
-    - build
-  variables:
-    PROXY_ENABLE_VAR: "enable_http_proxy"
-  <<: *build_proxy_image_template
-  rules:
-    - if: $PIPELINE_TARGET == "build" && $BUILD_TARGET == "http-proxy"
-      when: always
-
-build_ssh_proxy_image:
-  stage: build
-  environment:
-    name: $ENV
-  tags:
-    - build
-  variables:
-    PROXY_ENABLE_VAR: "enable_ssh_proxy"
-  <<: *build_proxy_image_template
-  rules:
-    - if: $PIPELINE_TARGET == "build" && $BUILD_TARGET == "ssh-proxy"
-      when: always
-
-deploy_compute_node:
-  stage: deploy
-  environment:
-    name: $ENV
-  tags:
-    - build
-  script:
-    - openstack image set --accept $compute-${BUILD_DATE} || true
-    - FAILED=false
-    - |
-      cat > user_data.txt <<EOF
-      #!/bin/bash
-      cat >> /etc/NetworkManager/conf.d/90-dns-none.conf<<EEOF
-      [main]
-      dns=none
-      EEOF
-      systemctl reload NetworkManager
-      echo "$DEV_KEY" >> /root/.ssh/authorized_keys
-      ip route replace default via ${DEFAULT_GATEWAY_IP} dev eth0
-      git clone ${CI_REPOSITORY_URL} /tmp/${CI_PROJECT_NAME}
-      cd /tmp/${CI_PROJECT_NAME}
-      git checkout ${CI_COMMIT_REF_NAME}
-      cat >> ansible/hosts<<EEOF
-      [$ENV]
-      127.0.0.1
-      EEOF
-      ansible-playbook -c local -i ansible/hosts --extra-vars="$EXTRA_VARS" ansible/cluster.yml | tee -a /tmp/ansible.log
-      rm -rf /tmp/${CI_PROJECT_NAME}
-      EOF
-    - |
-
-  rules:
-    - if: $PIPELINE_TARGET == "deploy"
-      when: always
-
 deploy_http_proxy_node:
   stage: deploy
   environment:
@@ -310,3 +275,39 @@ deploy_ssh_proxy_node:
   rules:
     - if: $PIPELINE_TARGET == "deploy" && $SSH_PROXY_IMAGE_ID
       when: always
+
+deploy_compute_node:
+  stage: deploy
+  environment:
+    name: $ENV
+  tags:
+    - build
+  script:
+    - openstack image set --accept $compute-${BUILD_DATE} || true
+    - FAILED=false
+    - |
+      cat > user_data.txt <<EOF
+      #!/bin/bash
+      cat >> /etc/NetworkManager/conf.d/90-dns-none.conf<<EEOF
+      [main]
+      dns=none
+      EEOF
+      systemctl reload NetworkManager
+      echo "$DEV_KEY" >> /root/.ssh/authorized_keys
+      ip route replace default via ${DEFAULT_GATEWAY_IP} dev eth0
+      git clone ${CI_REPOSITORY_URL} /tmp/${CI_PROJECT_NAME}
+      cd /tmp/${CI_PROJECT_NAME}
+      git checkout ${CI_COMMIT_REF_NAME}
+      cat >> ansible/hosts<<EEOF
+      [$ENV]
+      127.0.0.1
+      EEOF
+      ansible-playbook -c local -i ansible/hosts --extra-vars="$EXTRA_VARS" ansible/cluster.yml | tee -a /tmp/ansible.log
+      rm -rf /tmp/${CI_PROJECT_NAME}
+      EOF
+    - |
+
+  rules:
+    - if: $PIPELINE_TARGET == "deploy"
+      when: always
+