diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index df98ce0b79726913f6829478880dc1151cfed03a..1dd8029aecea913b598c6ec776e6fc869ad233e1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,10 +15,17 @@ build_image:
   - docker
   services:
   - docker:dind
+  variables:
+    IMAGE_NAME: "duniter/rust-wasm"
   script:
-    - docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
-    - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_BUILD_TAG" .
-    - docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
-    - docker push "$CI_REGISTRY_IMAGE:$CI_BUILD_TAG"
+    - docker pull $CI_REGISTRY_IMAGE:$CI_BUILD_TAG || true
+    - docker build --cache-from $CI_REGISTRY_IMAGE:$CI_BUILD_TAG --pull -t "$CI_REGISTRY_IMAGE:$CI_BUILD_TAG" .
+
+    - docker login -u "duniterteam" -p "$DUNITERTEAM_PASSWD"
+    - docker tag "$CI_REGISTRY_IMAGE:$CI_BUILD_TAG" "$IMAGE_NAME:$CI_BUILD_TAG"
+    - docker push "$IMAGE_NAME:$CI_BUILD_TAG"
+    - docker tag "$IMAGE_NAME:$CI_BUILD_TAG" "$IMAGE_NAME:latest"
+    - docker push "$IMAGE_NAME:latest"
+
   only:
     - tags