From 42d9655914fb6fb5883d4fd729abd136d38c9e7c Mon Sep 17 00:00:00 2001 From: "a.petraki" <a.petraki@perx.ru> Date: Thu, 6 Jun 2024 23:39:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20=D1=80=D0=B5=D0=BB=D0=B8=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 65ff970..9604fb4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,12 +1,13 @@ stages: + - pre-release - release # Рнициация процесса релиза. Запускается вручную или РёР· восходящего конвейера -start_release: +get_current_version: image: alpine:latest - stage: release + stage: pre-release rules: - - if: $CI_PIPELINE_SOURCE == "pipeline" + - if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"' - if: $CI_PIPELINE_SOURCE == "web" when: manual variables: @@ -16,63 +17,59 @@ start_release: - apk --no-cache add git script: - echo "Start release for perxis-proto" - - echo LAST_VERSION=$(git describe --tags --abbrev=0) >> vars.env + - echo CURRENT_VERSION=$(git describe --tags --abbrev=0) >> vars.env artifacts: reports: dotenv: vars.env # Расчет РЅРѕРІРѕР№ версии Рё формирование Changelog get_release_info: - stage: release + stage: pre-release image: name: orhunp/git-cliff:latest entrypoint: [ "" ] rules: - - if: $CI_PIPELINE_SOURCE == "pipeline" + - if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"' - if: $CI_PIPELINE_SOURCE == "web" needs: - - job: start_release + - job: get_current_version variables: GIT_STRATEGY: clone GIT_DEPTH: 0 script: - - echo "VERSION=$(git-cliff --bumped-version)" >> vars.env - - echo "$(git-cliff --unreleased | sed '1,6d' | sed '$d')" > CHANGELOG.md + - echo "RELEASE_VERSION=$(git-cliff --bumped-version)" >> vars.env + - echo "$(git-cliff --unreleased | sed '1,6d' | sed '$d')" > current_changelog.md artifacts: reports: dotenv: vars.env paths: - - CHANGELOG.md + - current_changelog.md # Выпуск релиза Рё публикация артефактов СЃ РЅРѕРІРѕР№ версией Рё СЃРїРёСЃРєРѕРј изменений -release: - stage: release +prepare_release: + stage: pre-release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - - if: $CI_PIPELINE_SOURCE == "pipeline" + - if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"' - if: $CI_PIPELINE_SOURCE == "web" needs: - - job: start_release + - job: get_current_version artifacts: true - job: get_release_info artifacts: true script: - - echo "PERXIS_PROTO_RELEASE_VERSION=$VERSION" >> vars.env + - echo "PERXIS_PROTO_CURRENT_VERSION=$CURRENT_VERSION" >> vars.env + - echo "PERXIS_PROTO_RELEASE_VERSION=$RELEASE_VERSION" >> vars.env - | - if [ "$VERSION" == "$LAST_VERSION" ]; then - exit 204 + # Если новая версия совпадает СЃРѕ старой, значит изменений РЅРµ было, Рё выпускать новый релиз РЅРµ РЅСѓР¶РЅРѕ + NEEDS_RELEASE=false + if [ "$RELEASE_VERSION" != "$CURRENT_VERSION" ]; then + NEEDS_RELEASE=true fi -# # TODO Убрать РїСЂРё влитии feature-ветки РІ мастер -# release: -# name: "Release $VERSION" -# tag_name: "$VERSION" -# description: "$VERSION" - allow_failure: - exit_codes: - - 204 + - echo "PERXIS_PROTO_NEEDS_RELEASE=$NEEDS_RELEASE" >> vars.env artifacts: when: always paths: - vars.env - - CHANGELOG.md + - current_changelog.md expire_in: 1 week \ No newline at end of file -- GitLab