From 6e8599106298ed13febd069d6fda8b354efb5b7b Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Fri, 3 Apr 2026 16:43:17 -0500 Subject: [PATCH] refactor(release): changes to only have the changelog in the release --- .gitea/workflows/release.yml | 77 ++++-------------------------------- 1 file changed, 7 insertions(+), 70 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index c17307b..088ac13 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -104,53 +104,16 @@ jobs: docker tag "$IMAGE_NAME:$TAG" "$IMAGE_NAME:$CHANNEL" docker push "$IMAGE_NAME:$CHANNEL" - - name: Create Gitea release - env: - RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} - GITEA_SERVER_URL: ${{ gitea.server_url }} - GITEA_REPOSITORY: ${{ gitea.repository }} + - name: Extract matching CHANGELOG section shell: bash run: | python3 - <<'PY' - import json - import os - import urllib.request - import urllib.error - - tag = os.environ["TAG"] - prerelease = os.environ["PRERELEASE"].lower() == "true" - server_url = os.environ["GITEA_SERVER_URL"].rstrip("/") - repo = os.environ["GITEA_REPOSITORY"] - token = os.environ["RELEASE_TOKEN"] - - image_name = os.environ["IMAGE_NAME"] - tag = os.environ["TAG"] - - with open("release_body.md", "r", encoding="utf-8") as f: - changelog_body = f.read() - - header = ( - "## 🚀 How to run this release\n\n" - "### Pull image\n" - f"```bash\n" - f"docker pull {image_name}:{tag}\n" - f"```\n\n" - "### Run container\n" - f"```bash\n" - f"docker run -d \\\n" - f" --name lst \\\n" - f" -p 3000:3000 \\\n" - f" {image_name}:{tag}\n" - f"```\n\n" - "---\n\n" - ) - import os import re from pathlib import Path version = os.environ["VERSION"] - changelog_path = Path("CHANGELOG.md") + changelog_path = Path("lst_v3/CHANGELOG.md") if not changelog_path.exists(): Path("release_body.md").write_text(f"Release {version}\n", encoding="utf-8") @@ -159,45 +122,19 @@ jobs: text = changelog_path.read_text(encoding="utf-8") pattern = re.compile( - rf"^##\s+{re.escape(version)}(?:\s*\([^)]+\))?\n(.*?)(?=^##\s+[0-9]|\Z)", + rf"^##\s+\[?{re.escape(version)}\]?[^\n]*\n(.*?)(?=^##\s+\[?[0-9]|\Z)", re.MULTILINE | re.DOTALL, ) match = pattern.search(text) - if match: body = match.group(1).strip() else: body = f"Release {version}" + if not body: + body = f"Release {version}" + Path("release_body.md").write_text(body + "\n", encoding="utf-8") - - url = f"{server_url}/api/v1/repos/{repo}/releases" - payload = { - "tag_name": tag, - "name": tag, - "body": body, - "draft": False, - "prerelease": prerelease, - } - - data = json.dumps(payload).encode("utf-8") - req = urllib.request.Request( - url, - data=data, - method="POST", - headers={ - "Authorization": f"token {token}", - "Content-Type": "application/json", - "Accept": "application/json", - }, - ) - - try: - with urllib.request.urlopen(req) as resp: - print(resp.read().decode("utf-8")) - except urllib.error.HTTPError as e: - details = e.read().decode("utf-8", errors="replace") - print(details) - raise + print(body) PY \ No newline at end of file