From 3f304e901cac8f4de53edc2c3d644301a16b6bb6 Mon Sep 17 00:00:00 2001 From: dom4k Date: Mon, 16 Mar 2026 20:11:04 +0000 Subject: [PATCH] Require release notes for each version bump --- Makefile | 12 ++++++++---- README.md | 5 +++-- scripts/update_release_notes.sh | 23 +++++++++++++++++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) create mode 100755 scripts/update_release_notes.sh diff --git a/Makefile b/Makefile index ee5bf8c..7ad0dcd 100644 --- a/Makefile +++ b/Makefile @@ -9,28 +9,32 @@ APK_PATH := $(ANDROID_DIR)/app/build/outputs/apk/debug/app-debug.apk PUBLISHED_APK := $(DOWNLOADS_DIR)/app-debug.apk VERSION_FILE := $(META_DIR)/version.json -.PHONY: help client-version-bump client-build client-tag client-publish publish \ +.PHONY: help client-version-bump client-build client-tag client-publish publish require-release-notes \ server-start server-stop server-restart server-status server-rebuild help: @echo "Targets:" - @echo " make client-build - bump version, build debug APK, create git tag" + @echo " make client-build - require release notes, bump version, build debug APK, create git tag" @echo " make client-tag - create git tag for the current Android version" @echo " make client-publish - copy APK to website and refresh version metadata" - @echo " make publish - bump version, build APK, publish client, reload nginx" + @echo " make publish - require release notes, bump version, build APK, publish client, reload nginx" + @echo " vars: RELEASE_NOTES='- item 1\n- item 2' or RELEASE_NOTES_FILE=/path/to/file" @echo " make server-start - start nginx" @echo " make server-stop - stop nginx" @echo " make server-restart - restart nginx" @echo " make server-status - show nginx status" @echo " make server-rebuild - test nginx config and reload nginx" +require-release-notes: + @$(PROJECT_ROOT)/scripts/update_release_notes.sh + client-version-bump: @$(PROJECT_ROOT)/scripts/bump_version.sh client-tag: @$(PROJECT_ROOT)/scripts/create_version_tag.sh -client-build: client-version-bump +client-build: require-release-notes client-version-bump cd $(ANDROID_DIR) && ./gradlew assembleDebug --no-daemon @$(PROJECT_ROOT)/scripts/create_version_tag.sh diff --git a/README.md b/README.md index 4365ab4..676ffe0 100644 --- a/README.md +++ b/README.md @@ -95,10 +95,11 @@ - `docs/` — документация протокола и архитектуры ## Автоматизация -- `make client-build` — увеличить версию, собрать `debug` APK и создать git-тег `vX.Y.Z`. +- `make client-build RELEASE_NOTES='- пункт 1\n- пункт 2'` — обновить `release-notes.txt`, увеличить версию, собрать `debug` APK и создать git-тег `vX.Y.Z`. - `make client-tag` — создать git-тег для текущей версии вручную. - `make client-publish` — опубликовать собранный APK на сайт и обновить `version.json`. -- `make publish` — увеличить версию, собрать APK, опубликовать клиент и перезагрузить `nginx`. +- `make publish RELEASE_NOTES='- пункт 1\n- пункт 2'` — обновить release notes, увеличить версию, собрать APK, опубликовать клиент и перезагрузить `nginx`. +- Вместо `RELEASE_NOTES` можно передать `RELEASE_NOTES_FILE=/path/to/file`. - `make server-start|server-stop|server-restart|server-status|server-rebuild` — управление `nginx`. ## Лицензия diff --git a/scripts/update_release_notes.sh b/scripts/update_release_notes.sh new file mode 100755 index 0000000..afc57a9 --- /dev/null +++ b/scripts/update_release_notes.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +TARGET_FILE="$ROOT_DIR/website/assets/meta/release-notes.txt" + +release_notes="${RELEASE_NOTES:-}" +release_notes_file="${RELEASE_NOTES_FILE:-}" + +if [[ -n "$release_notes_file" ]]; then + if [[ ! -f "$release_notes_file" ]]; then + echo "RELEASE_NOTES_FILE does not exist: $release_notes_file" >&2 + exit 1 + fi + cp "$release_notes_file" "$TARGET_FILE" +elif [[ -n "$release_notes" ]]; then + printf '%s\n' "$release_notes" > "$TARGET_FILE" +else + echo "Release notes are required. Use RELEASE_NOTES='- item 1\n- item 2' or RELEASE_NOTES_FILE=/path/to/file." >&2 + exit 1 +fi + +echo "Release notes updated"