diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a99622b60a0fc5de6105d2845a71ffa5a0a2de8b..b1709a0c9d1c8f86c6823e642393f9fe25dd3e96 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,10 +5,6 @@ services:
 stages:
   - build
   - release
-  - deploy
-
-variables:
-  CONTAINER_BASE_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
 
 before_script:
   - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
@@ -16,9 +12,27 @@ before_script:
 build:
   stage: build
   script:
-    - docker build -t $CONTAINER_BASE_IMAGE ./api
-    - docker push $CONTAINER_BASE_IMAGE
+    - docker build -t gateway-semantic ./api
   only:
     - main
     - develop
     - /^release-.*$/
+
+release:
+  image: node:13
+  stage: release
+  before_script:
+    - docker build -t gateway-semantic ./api
+  only:
+    refs:
+    - main
+    - develop
+    - rc
+    # This matches maintenance branches
+    - /^(([0-9]+)\.)?([0-9]+)\.x/
+    # This matches pre-releases
+    - /^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$/ 
+  script:
+    - cd ./api
+    - npm install @semantic-release/gitlab @semantic-release/changelog @eclass/semantic-release-docker
+    - npx semantic-release