diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3e78652a232c68aed8c1925d2f204cab706219e9..9053033e53045dba5a291cf41517a8cb7d3f3afa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -86,24 +86,17 @@ test::unit:
         coverage_format: cobertura
         path: ./coverage.xml
   coverage: /(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/
-
-deploy::build:
+  
+package::release:
   stage: deploy
   extends: .on-new-version
   before_script:
-      pip install build
+      pip install twine build
   script:
     - python -m build
+    - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi --verbose dist/*
   artifacts:
     expire_in: "1 day"
     paths:
       - ./dist/*.whl
-      - ./dist/*.tar.gz
-
-deploy::package::release:
-  stage: deploy
-  extends: .on-new-version
-  before_script:
-      pip install twine
-  script:
-    - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi --verbose dist/*
+      - ./dist/*.tar.gz
\ No newline at end of file