Skip to content
Snippets Groups Projects

Подготовка МР с информацией о релизе

Compare and
1 file
+ 23
26
Compare changes
  • Side-by-side
  • Inline
+ 23
26
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
Loading