diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 65ff9709b9cae5bad877adabdb14979c72bd707a..9604fb49d8049451bf2cb2d6d18a96f82226c9bc 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