diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a14f64d0ec490489d3ba5791700354e6930757ed..c6feeeb2eaa9ddae5ea272ceba544ee26f5fd793 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,6 +25,74 @@ variables:
 #  include:
 #    - template: Security/SAST.gitlab-ci.yml
 
+build_stack:
+  stage: buildenv
+  variables:
+    DOCKER_TLS_CERTDIR: ''
+    DOCKER_HOST: tcp://docker:2375/
+    DOCKER_DRIVER: overlay2
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
+  before_script:
+    - docker login ${CI_DEPENDENCY_PROXY_SERVER} -u ${CI_DEPENDENCY_PROXY_USER} -p ${CI_DEPENDENCY_PROXY_PASSWORD}
+  script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+    - docker build -t "$CI_REGISTRY_IMAGE/cozy-env:latest"  ./docker/
+    - docker push $CI_REGISTRY_IMAGE/cozy-env:latest
+  only:
+    - master
+    - dev
+  when: manual
+  
+sonarqube-mr:
+  stage: quality
+  only:
+    - merge_requests
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
+  variables:
+    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
+    GIT_DEPTH: '0' # T
+  cache:
+    key: '${CI_JOB_NAME}'
+    paths:
+      - .sonar/cache
+  script:
+    - >
+      sonar-scanner
+      -Dsonar.projectName=ecolyo-mr
+      -Dsonar.projectVersion=1.0
+      -Dsonar.sourceEncoding=UTF-8
+      -Dsonar.projectBaseDir=.
+      -Dsonar.host.url=${SONAR_URL}
+      -Dsonar.projectKey=ecolyo-mr
+      -Dsonar.login=${SONAR_MR_TOKEN}
+      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
+      -Dsonar.qualitygate.wait=true
+
+sonarqube:
+  stage: quality
+  only:
+    - dev
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
+  variables:
+    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
+    GIT_DEPTH: '0' # T
+  cache:
+    key: '${CI_JOB_NAME}'
+    paths:
+      - .sonar/cache
+  script:
+    - >
+      sonar-scanner
+      -Dsonar.projectName=ecolyo
+      -Dsonar.projectVersion=1.0
+      -Dsonar.sourceEncoding=UTF-8
+      -Dsonar.projectBaseDir=.
+      -Dsonar.host.url=${SONAR_URL}
+      -Dsonar.projectKey=ecolyo
+      -Dsonar.login=${SONAR_TOKEN}
+      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
+      -Dsonar.qualitygate.wait=true
+
 test:
   stage: test
   before_script:
@@ -43,7 +111,7 @@ test:
     - master
     - merge_requests
 
-build-renovate:
+build-mr:
   stage: build
   before_script:
     - apk add git
@@ -55,9 +123,9 @@ build-renovate:
     - merge_requests
   artifacts:
     paths:
-      - build/assets
+      - build
 
-build-test-review:
+build-for-testing:
   stage: build
   before_script:
     - apk add git
@@ -77,7 +145,7 @@ build-test-review:
   when: manual
 
 
-build-dev:
+build-dev-branch:
   stage: build
   before_script:
     - apk add git
@@ -94,7 +162,6 @@ build-dev:
     - yarn deploy-dev
   only:
     - dev
-    - tags
 
 build:
   stage: build
@@ -114,91 +181,15 @@ build:
   only:
     - master
 
-build_stack:
-  stage: buildenv
-  variables:
-    DOCKER_TLS_CERTDIR: ''
-    DOCKER_HOST: tcp://docker:2375/
-    DOCKER_DRIVER: overlay2
-  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
-  before_script:
-    - docker login ${CI_DEPENDENCY_PROXY_SERVER} -u ${CI_DEPENDENCY_PROXY_USER} -p ${CI_DEPENDENCY_PROXY_PASSWORD}
-  script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-    - docker build -t "$CI_REGISTRY_IMAGE/cozy-env:latest"  ./docker/
-    - docker push $CI_REGISTRY_IMAGE/cozy-env:latest
-  only:
-    - master
-    - dev
-  when: manual
-
-publish:
-  stage: publish
-  before_script:
-    - apk add git
-  script:
-    - yarn cozyPublish
-  only:
-    - tags
-  when: manual
-
-sonarqube:
-  stage: quality
-  only:
-    - dev
-  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
-  variables:
-    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
-    GIT_DEPTH: '0' # T
-  cache:
-    key: '${CI_JOB_NAME}'
-    paths:
-      - .sonar/cache
-  script:
-    - >
-      sonar-scanner
-      -Dsonar.projectName=ecolyo
-      -Dsonar.projectVersion=1.0
-      -Dsonar.sourceEncoding=UTF-8
-      -Dsonar.projectBaseDir=.
-      -Dsonar.host.url=${SONAR_URL}
-      -Dsonar.projectKey=ecolyo
-      -Dsonar.login=${SONAR_TOKEN}
-      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
-      -Dsonar.qualitygate.wait=true
-
-sonarqube-mr:
-  stage: quality
-  only:
-    - merge_requests
-  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
-  variables:
-    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
-    GIT_DEPTH: '0' # T
-  cache:
-    key: '${CI_JOB_NAME}'
-    paths:
-      - .sonar/cache
-  script:
-    - >
-      sonar-scanner
-      -Dsonar.projectName=ecolyo-mr
-      -Dsonar.projectVersion=1.0
-      -Dsonar.sourceEncoding=UTF-8
-      -Dsonar.projectBaseDir=.
-      -Dsonar.host.url=${SONAR_URL}
-      -Dsonar.projectKey=ecolyo-mr
-      -Dsonar.login=${SONAR_MR_TOKEN}
-      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
-      -Dsonar.qualitygate.wait=true
-
-deploy_dev:
+deploy-to-dev:
   stage: deploy
   tags:
     - deploy-alpha
   script:
     - cd /root/ecolyo-infra-scripts/cicid_scripts
     - './update_ecolyo_dev.sh'
+  dependencies:
+    - build-for-testing
   only:
     - merge_requests
   environment:
@@ -206,7 +197,7 @@ deploy_dev:
     url: https://ecolyo.dev.cozy.self-data.alpha.grandlyon.com/
   when: manual
 
-deploy_demo:
+deploy-to-ecolyodemo:
   stage: deploy
   tags:
     - deploy-alpha
@@ -219,7 +210,7 @@ deploy_demo:
     name: ecolyodemo
     url: https://ecolyo.ecolyodemo.cozy.self-data.alpha.grandlyon.com/
 
-deploy_alpha:
+deploy-to-all-instances:
   stage: deploy
   tags:
     - deploy-alpha
@@ -228,3 +219,13 @@ deploy_alpha:
     - './update_all_ecolyo_dev.sh'
   only:
     - tags
+
+publish:
+  stage: publish
+  before_script:
+    - apk add git
+  script:
+    - yarn cozyPublish
+  only:
+    - tags
+  when: manual
\ No newline at end of file