diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 89097ee7027c89fdd5fda0dfa5c2fff5c7c6fb23..8ba71304de8c04e0363b2f4959614602ba4eaac2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,6 @@ include:
     file:
       - ".gitlab/ci/static-analysis.yml"
       - ".gitlab/ci/doc.yml"
-      - ".gitlab/ci/pip.yml"
 
 variables:
   IMPL_MODULE_NAME: theia_dumper
@@ -12,10 +11,6 @@ variables:
   PYTHON_IMG: python:3.12-slim
   PACKAGE_INSTALL_EXTRAS: "[test]"
 
-  PIP_PACKAGE_URL: https://upload.pypi.org/legacy/
-  TWINE_USERNAME: __token__
-  TWINE_PASSWORD: ${PYPI_TOKEN} 
-
   DOC_BUILD_SELF: true
 
 stages:
@@ -58,3 +53,14 @@ Pytest:
         coverage_format: cobertura
         path: coverage.xml
       junit: report.xml
+
+pypi:
+  stage: Pip
+  only:
+   - main
+  before_script:
+   - python3 -m pip install --upgrade build twine
+  script:
+   - python3 -m build
+  after_script:
+   - python3 -m twine upload --repository-url https://upload.pypi.org/legacy/ --non-interactive --verbose -u __token__ -p $PYPI_TOKEN dist/*