chore(ci): tag-triggered release workflow and helpers
Release / build-and-push (push) Successful in 50s

Add .gitea/workflows/release.yml: on v* tag push (or manual
dispatch) build the Docker image and push
git.linuxhg.com/games-database/games-frontend:<tag> plus
:latest, then create/update the Gitea Release from the
annotated tag message. No build-args needed since the build
is env-free. Main-branch pushes do nothing.

Add cliff.toml (conventional-commit release notes), Makefile
release target, and ./release wrapper (accepts 1.0 or v1.0).
Same flow as the other repos; needs a REGISTRY_TOKEN repo
Actions secret (PAT with write:package and write:repository).
This commit is contained in:
2026-09-06 12:49:21 -04:00
parent e2ae729a60
commit e85bdabf10
4 changed files with 201 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
# git-cliff configuration — generates the body of each Gitea Release from
# Conventional Commits accumulated since the previous tag. Used locally by
# `make release` with --latest so only the current tag's section is emitted
# (no full history, no header — the Gitea Release title is the tag).
# Docs: https://git-cliff.org/docs/configuration
[changelog]
header = ""
body = """
{% for group, commits in commits | group_by(attribute="group") %}\
### {{ group | upper_first }}
{% for commit in commits %}\
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}{{ commit.message | upper_first }} ({{ commit.id | truncate(length=7, end="") }})
{% endfor %}\
{% endfor %}\
"""
trim = true
footer = ""
[git]
conventional_commits = true
filter_unconventional = false
require_conventional = false
split_commits = false
commit_parsers = [
{ message = "^feat", group = "Features" },
{ message = "^fix", group = "Bug Fixes" },
{ message = "^perf", group = "Performance" },
{ message = "^refactor", group = "Refactor" },
{ message = "^docs", group = "Documentation" },
{ message = "^test", group = "Tests" },
{ message = "^chore|^ci", group = "Miscellaneous Tasks" },
{ message = ".*", group = "Other" },
]
filter_commits = false
tag_pattern = "v[0-9].*"
sort_commits = "oldest"