diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8ded4aea90a6bdc8460d4a515d522f9c6e29ed32..97141b7baad860b2c28e40a725d5e158c8755a5f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,8 +1,9 @@
 stages:
-  - build
+  - build_test
+  - release
 
 check-format:
-  stage: build
+  stage: build_test
   image: rust:latest
   script:
     - rustup component add rustfmt
@@ -10,54 +11,72 @@ check-format:
   tags:
     - buildonly
 
-rust-latest:
-  stage: build
+test-rust-latest:
+  stage: build_test
   image: rust:latest
   script:
-    - cargo build --verbose
     - cargo test --verbose
   tags:
     - buildonly
 
-rust-nightly:
-  stage: build
+test-rust-nightly:
+  stage: build_test
   image: rustlang/rust:nightly
   script:
-    - cargo build --verbose
     - cargo test --verbose
   allow_failure: true
   tags:
     - buildonly
 
-rust-alpine:
-  stage: build
+release-linux:
+  stage: release
   image: rust:latest
+  variables:
+    TARGET: target/x86_64-unknown-linux-musl/release/gitlab-project-doctor
   script:
     - apt update -y
     - apt install -y musl-dev musl-tools build-essential
     - rustup target add x86_64-unknown-linux-musl
     - cargo build --target x86_64-unknown-linux-musl --release
-    - target/x86_64-unknown-linux-musl/release/gitlab-project-doctor --help
+    - strip $TARGET
+    - ldd $TARGET
+    - $TARGET --help
+  artifacts:
+    paths:
+      - $TARGET
   tags:
     - buildonly
 
-rust-macos:
-  stage: build
+release-macos-silicon:
+  stage: release
+  variables:
+    TARGET: target/aarch64-apple-darwin/release/gitlab-project-doctor
   script:
     - rustup target add aarch64-apple-darwin
     - cargo build --target aarch64-apple-darwin --release
-    - strip target/aarch64-apple-darwin/release/gitlab-project-doctor
-    - target/aarch64-apple-darwin/release/gitlab-project-doctor --help
+    - strip $TARGET
+    - otool -L $TARGET
+    - $TARGET --help
+  artifacts:
+    paths:
+      - $TARGET
   tags:
     - macos_mx
+  retry: 1
 
-rust-macos-x86:
-  stage: build
-  image: joseluisq/rust-linux-darwin-builder:1.76.0
+release-macos-x86:
+  stage: release
+  variables:
+    TARGET: target/x86_64-apple-darwin/release/gitlab-project-doctor
   script:
     - rustup target add x86_64-apple-darwin
     - cargo build --target x86_64-apple-darwin --release
-    - strip target/x86_64-apple-darwin/release/gitlab-project-doctor
-    - target/x86_64-apple-darwin/release/gitlab-project-doctor --help
+    - strip $TARGET
+    - otool -L $TARGET
+    - $TARGET --help
+  artifacts:
+    paths:
+      - $TARGET
   tags:
-    - macos_mx
\ No newline at end of file
+    - macos_mx
+  retry: 1
\ No newline at end of file