diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3ea37cd7f0439b9369fafb7cb392910f085d0a2f..3209b6102b61e1e82d14287150151eb9db499ae1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -40,11 +40,17 @@ prepare_release:
       CURRENT_VERSION=$(git describe --tags --abbrev=0)
       RELEASE_VERSION=$CURRENT_VERSION
       
-      # Релиз perxis-proto - это всегда изменения апи и хотфиксом быть не может. Выполняется только при наличии изменений
-      if [ $HOTFIX_RELEASE != "true" ] && [ $(git rev-list $CURRENT_VERSION..HEAD --count) -gt 0 ]; then
+      # Релиз выполняется только при наличии изменений
+      if [ $(git rev-list $CURRENT_VERSION..HEAD --count) -gt 0 ]; then
+        # Если релиз на мастере, то устанавливается версия равная версии в Perxis
         RELEASE_VERSION=$PERXIS_RELEASE_VERSION
+      
+        # Если релиз хотфиксовый, то увеличиваем патчевую версию
+        if [ $HOTFIX_RELEASE == "true" ]; then
+          RELEASE_VERSION=$(echo $CURRENT_VERSION | awk -F . '{print $1"."$2"."$3+1}')
+        fi
       fi
-
+      
       # Если новая версия совпадает со старой, значит изменений не было, и выпускать новый релиз не нужно
       NEEDS_RELEASE=false
       if [ "$RELEASE_VERSION" != "$CURRENT_VERSION" ]; then
@@ -70,6 +76,29 @@ prepare_release:
 
 # ----- release -----
 
+create_release_branch:
+  stage: release
+  image: bitnami/git:latest
+  variables:
+    GIT_DEPTH: 0
+    GIT_STRATEGY: clone
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE != "true"
+    - if: $CI_PIPELINE_SOURCE == "web"
+  script:
+    - |
+      if [ $NEEDS_RELEASE == "true" ] && [ $CI_COMMIT_BRANCH == "master" ]; then
+        git config user.email "gitlab@ci-cd.pipeline"
+        git config user.name "gitlab-ci"
+        git remote remove gitlab_origin || true
+        git remote add gitlab_origin https://release_gitlab_ci:$PERXIS_PROTO_REPO_ACCESS_TOKEN@git.perx.ru/perxis/perxis-go.git
+        RELEASE_BRANCH=${VERSION:1:-2}
+        git branch release/$RELEASE_BRANCH || true
+        git push gitlab_origin release/$RELEASE_BRANCH
+      fi
+
+# Релиз выполняется только при `$NEEDS_RELEASE:true`. Если релиз не нужен, джоба выйдет с
+# кодом 203, и это верное поведение
 release:
   stage: release
   image: registry.gitlab.com/gitlab-org/release-cli:latest