diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 02b6d89095d098c6c235cd03315c6eb8b83a0c1f..5c1f1501e719a3425456532834b2b82a76e06a9a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,3 +25,11 @@ test:
         coverage_format: cobertura
         path: coverage.xml
 
+publish:
+  needs: [test]
+  only:
+    - tags
+  script:
+    - pip install --upgrade build twine
+    - python -m build
+    - twine upload dist/*