diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7fa4eef40b191770c0b5356ba292d3d980f70039..3ea37cd7f0439b9369fafb7cb392910f085d0a2f 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: