diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b6f236db226f49a876a95a90596af4d12880d2c9..f2a1cf2958d64a471f0c6574eab43afd8102e45a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,6 +2,7 @@ stages:
   - build
   - test
   - deploy
+  - publish
 
 .gms_client:
   tags:
@@ -29,7 +30,7 @@ test_gms_client:
   script:
     - cd gms-client/gms-client
     - mvn clean test
-
+    
 test_gms:
   stage: test
   tags:
@@ -82,3 +83,14 @@ dockerize_gms:
       changes:
         - gms/*
         - gms-ui/*
+
+upload_jar:
+  stage: publish
+  tags:
+    - shell
+  only:
+    - master
+  script:
+    # extract jar from Docker image
+    - docker run --rm --entrypoint cat "${CI_REGISTRY_IMAGE}" /gms.jar > gms.jar
+    - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file gms.jar "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/gms/latest/gms.jar"'