diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 19327fe5d69027acf77d329f7f31b605b8cd6865..a3343bdc15093a0199bc844f96ff0e99db77018c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,18 +1,16 @@
 stages:
+    - publish_crate
     - build_and_tests
     - fmt
     - clippy
     - package
     - prerelease
-    - publish
-    
-before_script:
-    - export PATH="$HOME/.cargo/bin:$PATH"
+    - release
+    - publish_doc
 
 variables:
   CARGO_HOME: $CI_PROJECT_DIR/cargo
 
-
 .rust_stable_env: &rust_stable_env
   tags:
     - redshift-rs-stable
@@ -83,7 +81,20 @@ clippy:
     - cargo install --force clippy --verbose
   script:
     - cargo clippy --all -- -D warnings --verbose
-  allow_failure: true  
+  allow_failure: true
+
+publish:crate:
+  <<: *rust_stable_env
+  stage: publish_crate
+  script:
+    - IFS='/' read -r first a <<< "$CI_COMMIT_TAG"
+    - cd $first
+    - cargo login $DUNITER_CRATES_TOKEN
+    - cargo publish
+  only:
+    - tags
+  allow_failure: true
+  when: manual
 
 package:test:linux-x64:
   <<: *rust_stable_env
@@ -116,8 +127,7 @@ package:prod:linux-x64:
       - work/bin/
     expire_in: 2 weeks
   only:
-      - dev
-      - tags
+    - tags
 
 .release_jobs: &release_jobs
   image: tensorflow/tensorflow:latest-py3
@@ -126,7 +136,6 @@ package:prod:linux-x64:
   script:
     - python3 .gitlab/releaser
   only:
-    - dev
     - tags
 
 prerelease:
@@ -136,32 +145,18 @@ prerelease:
     RELEASE_BIN_DIR: work/bin/
     SOURCE_EXT: '["tar.gz", "zip"]'
 
-publish:release:
+release:
   <<: *release_jobs
-  stage: publish
+  stage: release
   variables:
     RELEASE_BIN_DIR: work/bin/
     WIKI_RELEASE: Releases
   allow_failure: false
   when: manual
 
-publish:crate:
-  <<: *rust_stable_env
-  stage: publish
-  script:
-    - IFS='/' read -r first a <<< "$CI_COMMIT_TAG"
-    - cd $first
-    - cargo login $DUNITER_CRATES_TOKEN
-    - cargo publish
-  only:
-    - publish-crate
-    - tags
-  allow_failure: false
-  when: manual
-
 pages:
   <<: *rust_stable_env
-  stage: publish
+  stage: publish_doc
   script:
     - cargo doc
     - mv target/doc public