diff --git a/Makefile b/Makefile index 9a705e8..ee5bf8c 100644 --- a/Makefile +++ b/Makefile @@ -9,12 +9,13 @@ 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-publish publish \ +.PHONY: help client-version-bump client-build client-tag client-publish publish \ server-start server-stop server-restart server-status server-rebuild help: @echo "Targets:" - @echo " make client-build - bump version and build debug APK" + @echo " make client-build - 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 server-start - start nginx" @@ -26,15 +27,22 @@ help: client-version-bump: @$(PROJECT_ROOT)/scripts/bump_version.sh +client-tag: + @$(PROJECT_ROOT)/scripts/create_version_tag.sh + client-build: client-version-bump cd $(ANDROID_DIR) && ./gradlew assembleDebug --no-daemon + @$(PROJECT_ROOT)/scripts/create_version_tag.sh client-publish: @mkdir -p $(DOWNLOADS_DIR) $(META_DIR) cp $(APK_PATH) $(PUBLISHED_APK) @$(PROJECT_ROOT)/scripts/update_site_metadata.sh -publish: client-build client-publish server-rebuild +publish: + @$(MAKE) client-build + @$(MAKE) client-publish + @$(MAKE) server-rebuild server-start: sudo systemctl start nginx diff --git a/README.md b/README.md index 6994ebd..4365ab4 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,8 @@ - `docs/` — документация протокола и архитектуры ## Автоматизация -- `make client-build` — увеличить версию и собрать `debug` APK. +- `make client-build` — увеличить версию, собрать `debug` APK и создать git-тег `vX.Y.Z`. +- `make client-tag` — создать git-тег для текущей версии вручную. - `make client-publish` — опубликовать собранный APK на сайт и обновить `version.json`. - `make publish` — увеличить версию, собрать APK, опубликовать клиент и перезагрузить `nginx`. - `make server-start|server-stop|server-restart|server-status|server-rebuild` — управление `nginx`. diff --git a/scripts/create_version_tag.sh b/scripts/create_version_tag.sh new file mode 100755 index 0000000..ccc4453 --- /dev/null +++ b/scripts/create_version_tag.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +BUILD_FILE="$ROOT_DIR/android/app/build.gradle.kts" + +version_name="$(grep -E 'versionName = "[0-9]+\.[0-9]+\.[0-9]+"' "$BUILD_FILE" | head -n1 | sed -E 's/.*versionName = "([0-9]+\.[0-9]+\.[0-9]+)"/\1/')" +tag_name="v${version_name}" + +if git -C "$ROOT_DIR" rev-parse -q --verify "refs/tags/${tag_name}" >/dev/null; then + echo "Tag ${tag_name} already exists" + exit 0 +fi + +git -C "$ROOT_DIR" tag -a "$tag_name" -m "Release ${tag_name}" +echo "Created tag ${tag_name}"