From 92b29e18ad637768259719bb7748fd56a618a574 Mon Sep 17 00:00:00 2001 From: "a.petraki" <a.petraki@perx.ru> Date: Thu, 25 Jul 2024 11:39:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D1=80=D0=B5=D0=BB=D0=B8=D0=B7=D0=BD=D0=BE=D0=B9=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3ea37cd..3209b61 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 -- GitLab