diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index caeaf7a0cec7fa8523236057b0cb087b9fecb898..bce709deb9a148826b11a9fbfeed0654fff52e51 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -76,6 +76,7 @@ fmt_and_clippy:
   stage: build
   rules:
     - if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_BRANCH =~ /^(release\/runtime-)[0-9].*/
+      when: manual
       changes:
         - node/specs/$CHAIN-raw.json
   variables:
@@ -88,6 +89,24 @@ fmt_and_clippy:
   tags:
     - podman
 
+.docker_release_deploy:
+  stage: deploy
+  rules:
+    - if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_BRANCH =~ /^(release\/runtime-)[0-9].*/
+      when: manual
+      needs:
+        - $(CHAIN)_docker_release_build
+      changes:
+        - node/specs/$CHAIN-raw.json
+  variables:
+    IMAGE_NAME: "duniter/duniter-v2s-$CHAIN"
+    IMAGE_TAG: "latest"
+  script:
+    - echo podman push "localhost/$IMAGE_NAME:$IMAGE_TAG" "docker://docker.io/$IMAGE_NAME:$IMAGE_TAG"
+    - podman podman push "localhost/$IMAGE_NAME:$IMAGE_TAG" "docker://docker.io/$IMAGE_NAME:$IMAGE_TAG"
+  tags:
+    - podman
+
 gdev_docker_release_build:
   extends: .docker_release_build
   variables:
@@ -98,6 +117,16 @@ gtest_docker_release_build:
   variables:
     CHAIN: gtest
 
+gdev_docker_release_deploy:
+  extends: .docker_release_deploy
+  variables:
+    CHAIN: gdev
+
+gtest_docker_release_deploy:
+  extends: .docker_release_deploy
+  variables:
+    CHAIN: gtest
+
 .docker_deploy:
   stage: deploy
   before_script:
@@ -398,6 +427,7 @@ create_release:
   rules:
     - if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_BRANCH =~ /^(release\/runtime-)[0-9].*/
       needs: ['create_g1_data', 'gdev_srtool', 'gtest_srtool']
+      when: manual
   image: rust:1-bullseye
   variables:
     SRTOOL_OUTPUT_GDEV: $CI_PROJECT_DIR/release/srtool_output_gdev.json