From 47d30b159463880d7330607aa95d27c2696e8719 Mon Sep 17 00:00:00 2001 From: galeon Date: Sat, 24 Oct 2026 23:16:35 +0300 Subject: [PATCH] releases fixes Signed-off-by: galeon --- .gitea/workflows/release.yml | 14 ++++++++++---- doc/build-and-release.md | 2 ++ tests/scripts/static_checks.py | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 4daa925..84b079d 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -83,10 +83,16 @@ jobs: TOKEN: ${{ secrets.RELEASE_TOKEN }} TAG: ${{ steps.meta.outputs.tag }} run: | - base="${TAG#v}"; base="${base%%-*}" - notes=$(awk -v v="$base" ' - /^## \[/ { if (on) exit; if (index($0, "[" v "]")) { on=1; next } } - on' CHANGELOG.md) + full="${TAG#v}"; base="${full%%-*}" + section() { + awk -v v="$1" ' + /^## \[/ { if (on) exit; if (index($0, "[" v "]")) { on=1; next } } + on' CHANGELOG.md + } + # Сначала раздел ровно под тег ([1.0.1-rc1]), иначе общий под версию ([1.0.1]) + notes=$(section "$full") + [ -n "$notes" ] || notes=$(section "$base") + [ -n "$notes" ] || echo "::warning::В CHANGELOG.md нет раздела [$full] или [$base]" prerelease=false; case "$TAG" in *-rc*) prerelease=true;; esac # target_commitish: у новой ветки тег появится на этом коммите при публикации body=$(python3 -c 'import json,sys; print(json.dumps({"tag_name":sys.argv[1],"target_commitish":sys.argv[4],"name":"BiLauncher "+sys.argv[1],"body":sys.argv[2],"draft":True,"prerelease":sys.argv[3]=="true"}))' \ diff --git a/doc/build-and-release.md b/doc/build-and-release.md index 8c1a490..d629a18 100644 --- a/doc/build-and-release.md +++ b/doc/build-and-release.md @@ -136,6 +136,8 @@ QML-модуль собирается в `/qml/BiLauncher` (`OUTPUT_DIREC поэтому этот шаг на совести выпускающего. См. [testing.md](testing.md). 1. Поднять версию в `project(BiLauncher VERSION ...)` в `CMakeLists.txt`. 2. Добавить в `CHANGELOG.md` раздел `## [x.y.z] — дата`. Его текст станет описанием релиза. + Для пре-релиза можно завести отдельный раздел `## [x.y.z-rcN]`: он берётся в первую очередь, + а если его нет — используется `## [x.y.z]`. 3. Запустить релиз одним из способов: - **Пуш в `master`** — полноценный релиз `vx.y.z`. Если релиз или тег с этой версией уже есть, прогон ничего не собирает: сначала поднимите версию. diff --git a/tests/scripts/static_checks.py b/tests/scripts/static_checks.py index 290f2bf..9782953 100755 --- a/tests/scripts/static_checks.py +++ b/tests/scripts/static_checks.py @@ -70,7 +70,7 @@ def check_changelog(): return False version = match.group(1) changelog = open(os.path.join(ROOT, "CHANGELOG.md"), encoding="utf-8").read() - if re.search(r"^## \[" + re.escape(version) + r"\]", changelog, re.M): + if re.search(r"^## \[" + re.escape(version) + r"(-rc[0-9]+)?\]", changelog, re.M): print(f"версия {version}: раздел в CHANGELOG.md есть") else: print(f"ПРЕДУПРЕЖДЕНИЕ: в CHANGELOG.md нет раздела ## [{version}] — описание релиза будет пустым")