diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 154b4be14fe63500de284f1af70f94bfe0d57a83..519f2d6893d135d29590e8048e0b1cc88d719f3a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,6 +17,7 @@ stages:
   - build_test
   - release
   - deploy
+  - deploy_test
 
 include:
   - remote: 'https://gitlab.com/r2devops/hub/-/raw/docker_build@2.0.2/jobs/docker_build/docker_build.yml'
@@ -34,7 +35,6 @@ check-format:
     - rustup component add clippy
     - cargo fmt --all -- --check
     - cargo clippy -- -D warnings
-  allow_failure: true
   rules:
     - if: $CI_COMMIT_REF_NAME == 'main'
     - if: $CI_PIPELINE_SOURCE == "merge_request_event"
@@ -128,6 +128,29 @@ docker_build:
   rules:
     - if: $CI_COMMIT_REF_NAME == 'main'
 
+test-release-docker:
+  stage: deploy_test
+  image: $CI_REGISTRY/pub/numeco/gitlab-project-doctor:$CI_COMMIT_SHA
+  script:
+    - gitlab-project-doctor --url $CI_PROJECT_URL -a
+  cache: [ ]
+  needs:
+    - docker_build
+  rules:
+    - if: $CI_COMMIT_REF_NAME == 'main'
+
+test-release-linux:
+  stage: deploy_test
+  image: curlimages/curl:8.6.0
+  needs:
+    - release-linux
+  script:
+    - 'curl -O --header "JOB-TOKEN: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/x86_64-unknown-linux-musl/latest/gitlab-project-doctor"'
+    - chmod +x gitlab-project-doctor
+    - ./gitlab-project-doctor --url $CI_PROJECT_URL -a
+  rules:
+    - if: $CI_COMMIT_REF_NAME == 'main'
+
 docker_build-prod:
   stage: deploy
   extends: docker_build
diff --git a/Cargo.lock b/Cargo.lock
index 28a7a166a2ec2f3bb8e38aba023aaaf07d5e3997..8b368c77a2b323570fb9cde0ec3043071263e626 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -703,7 +703,7 @@ dependencies = [
 
 [[package]]
 name = "gitlab-project-doctor"
-version = "0.4.0-dev"
+version = "0.4.0"
 dependencies = [
  "atty",
  "chrono",
diff --git a/Cargo.toml b/Cargo.toml
index 9e244bbd84515c1be10cc844bf92231203014d71..31333ba01c2819e78ee067ff7b68f5e385fcf631 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "gitlab-project-doctor"
-version = "0.4.0-dev"
+version = "0.4.0"
 edition = "2018"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
diff --git a/src/diagnosis/pipeline_clean.rs b/src/diagnosis/pipeline_clean.rs
index 501d0399ec74d4da28a4eae33a4ef648f894ca74..d08c1b7b4f578d8cbcacdfd77cebf6925c7d1054 100644
--- a/src/diagnosis/pipeline_clean.rs
+++ b/src/diagnosis/pipeline_clean.rs
@@ -6,10 +6,10 @@ use gitlab::api::{ApiError, Query};
 use gitlab::Gitlab;
 use human_bytes::human_bytes;
 
-use crate::{fl, Reportable, ReportPending, ReportStatus};
-use crate::diagnosis::{GITLAB_SCOPE_ERROR, RemedyJob};
 use crate::diagnosis::gitlab_connection::{Project, Statistics};
 use crate::diagnosis::pipeline_analysis::{GitlabPipeline, PipelineAnalysisReport};
+use crate::diagnosis::{RemedyJob, GITLAB_SCOPE_ERROR};
+use crate::{fl, ReportPending, ReportStatus, Reportable};
 
 pub struct PipelineCleanJob {
     pub pipeline_report: PipelineAnalysisReport,