From 3fa4b52c71db7c67bb3b320f29b4b65fe6f7d693 Mon Sep 17 00:00:00 2001 From: Alena Petraki <a.petraki@perx.ru> Date: Mon, 22 Jul 2024 10:55:54 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20Multirepo=20Release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 56 +++++++++++++++++++++++--------------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7fa4eef..3ea37cd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,26 +2,8 @@ stages: - pre-release - release -# Рнициация процесса релиза. Запускается вручную или РёР· восходящего конвейера -get_current_version: - image: bitnami/git:latest - stage: pre-release - rules: - - if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"' - - if: $CI_PIPELINE_SOURCE == "web" - when: manual - variables: - GIT_STRATEGY: clone - GIT_DEPTH: 0 - script: - - echo "Start release for perxis-proto" - - echo CURRENT_VERSION=$(git describe --tags --abbrev=0) >> vars.env - artifacts: - reports: - dotenv: vars.env - # Расчет РЅРѕРІРѕР№ версии Рё формирование Changelog -get_release_info: +get_changelog: stage: pre-release image: name: orhunp/git-cliff:latest @@ -29,13 +11,10 @@ get_release_info: rules: - if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"' - if: $CI_PIPELINE_SOURCE == "web" - needs: - - job: get_current_version variables: GIT_STRATEGY: clone GIT_DEPTH: 0 script: - - echo "RELEASE_VERSION=$(git-cliff --bumped-version)" >> vars.env - echo "$(git-cliff --unreleased | sed '1,6d' | sed '$d')" > current_changelog.md artifacts: reports: @@ -46,25 +25,42 @@ get_release_info: # Выпуск релиза Рё публикация артефактов СЃ РЅРѕРІРѕР№ версией Рё СЃРїРёСЃРєРѕРј изменений prepare_release: stage: pre-release - image: registry.gitlab.com/gitlab-org/release-cli:latest + image: bitnami/git:latest + variables: + GIT_STRATEGY: clone + GIT_DEPTH: 0 rules: - if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"' - if: $CI_PIPELINE_SOURCE == "web" needs: - - job: get_current_version - artifacts: true - - job: get_release_info + - job: get_changelog artifacts: true script: - - echo "PERXIS_PROTO_CURRENT_VERSION=$CURRENT_VERSION" >> vars.env - - echo "PERXIS_PROTO_RELEASE_VERSION=$RELEASE_VERSION" >> vars.env - | + 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 + RELEASE_VERSION=$PERXIS_RELEASE_VERSION + fi + # Если новая версия совпадает СЃРѕ старой, значит изменений РЅРµ было, Рё выпускать новый релиз РЅРµ РЅСѓР¶РЅРѕ NEEDS_RELEASE=false if [ "$RELEASE_VERSION" != "$CURRENT_VERSION" ]; then NEEDS_RELEASE=true fi - - echo "PERXIS_PROTO_NEEDS_RELEASE=$NEEDS_RELEASE" >> vars.env + + echo "PERXIS_PROTO_CURRENT_VERSION=$CURRENT_VERSION" >> vars.env + echo "PERXIS_PROTO_RELEASE_VERSION=$RELEASE_VERSION" >> vars.env + echo "PERXIS_PROTO_NEEDS_RELEASE=$NEEDS_RELEASE" >> vars.env + + printf '### Release perxis-proto + PERXIS_RELEASE_VERSION: %s + HOTFIX_RELEASE: %s + CURRENT_VERSION: %s + RELEASE_VERSION: %s + NEEDS_RELEASE: %s' $PERXIS_RELEASE_VERSION $HOTFIX_RELEASE $CURRENT_VERSION $RELEASE_VERSION $NEEDS_RELEASE artifacts: when: always paths: @@ -84,7 +80,7 @@ release: script: - echo "Start release $VERSION" - | - if [ $NEEDS_RELEASE != "true" ]; then + if [ $NEEDS_RELEASE != "true" ]; then exit 203 fi allow_failure: -- GitLab