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