From c6bac33c71217fc41698a63528d7315b75231459 Mon Sep 17 00:00:00 2001 From: shop Date: Sun, 17 May 2026 09:43:41 +0300 Subject: [PATCH] =?UTF-8?q?chore:=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82?= =?UTF-8?q?=20=D0=B8=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=82=D0=BA=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20Gitea=20Release=20v0.10.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .release-notes/v0.10.0.md | 30 +++++++++++++++++ docs/RELEASE-0.10.md | 17 +++++++++- scripts/publish-gitea-release.sh | 55 ++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 .release-notes/v0.10.0.md create mode 100644 scripts/publish-gitea-release.sh diff --git a/.release-notes/v0.10.0.md b/.release-notes/v0.10.0.md new file mode 100644 index 0000000..1f3c2b0 --- /dev/null +++ b/.release-notes/v0.10.0.md @@ -0,0 +1,30 @@ +## 0.10.0 + +Первый стабильный релиз: **PostgreSQL 17**, два способа установки. + +### Установка — Docker + +```bash +git checkout v0.10.0 +cp .env.docker.example .env +docker compose up -d --build +``` + +### Установка — без Docker (Ubuntu) + +```bash +git checkout v0.10.0 +bash scripts/setup-postgres-ubuntu.sh +cp .env.example .env +npm install --omit=dev +systemctl enable --now shop +``` + +### Что входит + +- Каталог, корзина, регистрация, заказы +- Docker Compose (app + postgres, опционально Caddy) +- systemd + Caddy на хосте +- `/health`, скрипты диагностики + +Полная документация: [docs/RELEASE-0.10.md](docs/RELEASE-0.10.md) diff --git a/docs/RELEASE-0.10.md b/docs/RELEASE-0.10.md index c24c0ff..cc48c90 100644 --- a/docs/RELEASE-0.10.md +++ b/docs/RELEASE-0.10.md @@ -53,9 +53,24 @@ Caddy на хосте — см. `README.md`, раздел «Caddy». - С **SQLite**: раздел «Переход с SQLite на PostgreSQL 17» в README - С **0.10-beta**: `git pull`, `npm install`, `systemctl restart shop` -## Тег +## Тег и Release в Gitea + +Тег уже в репозитории: ```bash git fetch --tags git checkout v0.10.0 ``` + +**Release на сайте Gitea** (раздел Releases, не только Tags): + +1. Откройте: `https://git.evilfox.cc/test/shop10/releases/new` +2. Tag: `v0.10.0`, Title: `0.10.0` +3. Описание — из файла `.release-notes/v0.10.0.md` + +Или из CLI (нужен токен): + +```bash +export GITEA_TOKEN=ваш_токен +bash scripts/publish-gitea-release.sh 0.10.0 +``` diff --git a/scripts/publish-gitea-release.sh b/scripts/publish-gitea-release.sh new file mode 100644 index 0000000..7362add --- /dev/null +++ b/scripts/publish-gitea-release.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# Публикация Release в Gitea (не только git tag) +# Использование: +# export GITEA_TOKEN=ваш_токен # Настройки → Приложения → Токен доступа +# bash scripts/publish-gitea-release.sh 0.10.0 +set -euo pipefail + +VERSION="${1:-0.10.0}" +TAG="v${VERSION#v}" +GITEA_URL="${GITEA_URL:-https://git.evilfox.cc}" +OWNER="${GITEA_OWNER:-test}" +REPO="${GITEA_REPO:-shop10}" + +if [ -z "${GITEA_TOKEN:-}" ]; then + echo "Задайте GITEA_TOKEN (токен с правом write:repository)" + echo " export GITEA_TOKEN=..." + exit 1 +fi + +NOTES_FILE="$(dirname "$0")/../.release-notes/${TAG}.md" +if [ ! -f "$NOTES_FILE" ]; then + NOTES_FILE="$(dirname "$0")/../CHANGELOG.md" +fi + +BODY=$(sed -n "/## \[${VERSION#v}\]/,/^## \[/p" "$NOTES_FILE" 2>/dev/null | sed '$d' || cat "$NOTES_FILE") +if [ -z "$BODY" ]; then + BODY="Release ${TAG} — см. CHANGELOG.md" +fi + +# Экранирование JSON +BODY_JSON=$(printf '%s' "$BODY" | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))') + +HTTP=$(curl -sS -o /tmp/gitea-release.json -w "%{http_code}" -X POST \ + "${GITEA_URL}/api/v1/repos/${OWNER}/${REPO}/releases" \ + -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Content-Type: application/json" \ + -d "{\"tag_name\":\"${TAG}\",\"name\":\"${VERSION#v}\",\"body\":${BODY_JSON},\"target_commitish\":\"main\",\"prerelease\":false}") + +if [ "$HTTP" = "201" ]; then + echo "Release создан: ${GITEA_URL}/${OWNER}/${REPO}/releases/tag/${TAG}" + cat /tmp/gitea-release.json | python3 -m json.tool 2>/dev/null || cat /tmp/gitea-release.json +elif [ "$HTTP" = "409" ]; then + echo "Release ${TAG} уже существует — обновление..." + RELEASE_ID=$(curl -sS "${GITEA_URL}/api/v1/repos/${OWNER}/${REPO}/releases/tags/${TAG}" \ + -H "Authorization: token ${GITEA_TOKEN}" | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])") + curl -sS -X PATCH "${GITEA_URL}/api/v1/repos/${OWNER}/${REPO}/releases/${RELEASE_ID}" \ + -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Content-Type: application/json" \ + -d "{\"name\":\"${VERSION#v}\",\"body\":${BODY_JSON}}" | python3 -m json.tool + echo "Обновлено: ${GITEA_URL}/${OWNER}/${REPO}/releases/tag/${TAG}" +else + echo "Ошибка HTTP ${HTTP}" + cat /tmp/gitea-release.json + exit 1 +fi