Require release notes for each version bump
Some checks failed
Android CI / build (push) Has been cancelled

This commit is contained in:
dom4k
2026-03-16 20:11:04 +00:00
parent 9d37001e2b
commit 3f304e901c
3 changed files with 34 additions and 6 deletions

View File

@@ -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

View File

@@ -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`.
## Лицензия

23
scripts/update_release_notes.sh Executable file
View File

@@ -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"