Skip to content
Snippets Groups Projects

Доработки Multirepo Release

Merged Alena Petraki requested to merge feature/PRXS-2390-MultirepoRelease into master
1 file
+ 30
34
Compare changes
  • Side-by-side
  • Inline
+ 30
34
@@ -2,26 +2,8 @@ stages:
@@ -2,26 +2,8 @@ stages:
- pre-release
- pre-release
- 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
# Расчет новой версии и формирование Changelog
get_release_info:
get_changelog:
stage: pre-release
stage: pre-release
image:
image:
name: orhunp/git-cliff:latest
name: orhunp/git-cliff:latest
@@ -29,13 +11,10 @@ get_release_info:
@@ -29,13 +11,10 @@ get_release_info:
rules:
rules:
- if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"'
- if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"'
- if: $CI_PIPELINE_SOURCE == "web"
- if: $CI_PIPELINE_SOURCE == "web"
needs:
- job: get_current_version
variables:
variables:
GIT_STRATEGY: clone
GIT_STRATEGY: clone
GIT_DEPTH: 0
GIT_DEPTH: 0
script:
script:
- echo "RELEASE_VERSION=$(git-cliff --bumped-version)" >> vars.env
- echo "$(git-cliff --unreleased | sed '1,6d' | sed '$d')" > current_changelog.md
- echo "$(git-cliff --unreleased | sed '1,6d' | sed '$d')" > current_changelog.md
artifacts:
artifacts:
reports:
reports:
@@ -46,25 +25,42 @@ get_release_info:
@@ -46,25 +25,42 @@ get_release_info:
# Выпуск релиза и публикация артефактов с новой версией и списком изменений
# Выпуск релиза и публикация артефактов с новой версией и списком изменений
prepare_release:
prepare_release:
stage: pre-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:
rules:
- if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"'
- if: '$CI_PIPELINE_SOURCE == "pipeline" && $PREPARE_RELEASE == "true"'
- if: $CI_PIPELINE_SOURCE == "web"
- if: $CI_PIPELINE_SOURCE == "web"
needs:
needs:
- job: get_current_version
- job: get_changelog
artifacts: true
- job: get_release_info
artifacts: true
artifacts: true
script:
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
NEEDS_RELEASE=false
if [ "$RELEASE_VERSION" != "$CURRENT_VERSION" ]; then
if [ "$RELEASE_VERSION" != "$CURRENT_VERSION" ]; then
NEEDS_RELEASE=true
NEEDS_RELEASE=true
fi
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:
artifacts:
when: always
when: always
paths:
paths:
@@ -84,13 +80,13 @@ release:
@@ -84,13 +80,13 @@ release:
script:
script:
- echo "Start release $VERSION"
- echo "Start release $VERSION"
- |
- |
if [ $NEEDS_RELEASE != "true" ]; then
if [ $NEEDS_RELEASE != "true" ]; then
exit 203
exit 203
fi
fi
allow_failure:
allow_failure:
exit_codes:
exit_codes:
- 203
- 203
release:
# release:
name: 'Release $VERSION'
# name: 'Release $VERSION'
description: '$CI_COMMIT_TAG'
# description: '$CI_COMMIT_TAG'
tag_name: '$VERSION'
# tag_name: '$VERSION'
Loading