diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c6c369b49dc46e1b174c8505b748c6443f597854..225cfdcedea04eda8ccd9bf33e03973643d06c58 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,7 @@
 stages:
   - build_image
+  - upload_binary
+  - release
 
 
 build_and_tag_image: 
@@ -15,7 +17,28 @@ build_and_tag_image:
       --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}"
   rules:
     - if: $CI_COMMIT_TAG
+  artifacts:
+    when: always
+    paths: 
+      - gocanary
+  
+upload:
+  stage: upload_binary 
+  image: curlimages/curl:latest
+  script:
+    - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file gocanary "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/gocanary/${CI_COMMIT_TAG}/gocanary"'
+  rules:
+    - if: $CI_COMMIT_TAG
 
+release:
+  stage: release
+  image: registry.gitlab.com/gitlab-org/release-cli:latest
+  script: 
+    - release-cli create --name release-branch-$CI_JOB_ID --description "Some description" 
+      --tag-name $CI_COMMIT_TAG 
+      --assets-link '{"name":"Binary","url":"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/gocanary/${CI_COMMIT_TAG}/gocanary","link_type":"package"}'
+  rules:
+    - if: $CI_COMMIT_TAG
 
 build_latest:
   stage: build_image