From 994de3ecec889e7c52f2efb1607cbe96f1924fcc Mon Sep 17 00:00:00 2001 From: Markus Pesch Date: Mon, 17 Aug 2026 22:14:19 +0200 Subject: [PATCH] feat: support all SemVer 2.0 pre-release identifiers Replace the RC-only pattern with a generic SemVer 2.0 pre-release pattern so that tags like -alpha, -beta, -dev or -rc are all correctly detected as pre-releases. Previously only -rc tags were recognized. Also configure git user identity before tagging in the auto-release workflow. Co-authored-by: Copilot --- .gitea/workflows/auto-release.yaml | 2 ++ README.md | 10 +++++----- add-annotations.sh | 8 ++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/auto-release.yaml b/.gitea/workflows/auto-release.yaml index c790f09..aa3d950 100644 --- a/.gitea/workflows/auto-release.yaml +++ b/.gitea/workflows/auto-release.yaml @@ -64,5 +64,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | new_tag=${{ steps.bump.outputs.new_tag }} + git config --local user.name "${GIT_USER}" + git config --local user.email "${GIT_EMAIL}" git tag -a "${new_tag}" -m "${new_tag}" git push origin "${new_tag}" \ No newline at end of file diff --git a/README.md b/README.md index 1174b41..f5b9d66 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,14 @@ annotations](https://artifacthub.io/docs/topics/annotations/helm/#supported-anno them to `Chart.yaml`. The action parses conventional commit messages between two Git tags and produces an `artifacthub.io/changes` annotation. -Pre-release tags (matching `-rc`) are detected automatically and result in an `artifacthub.io/prerelease` annotation -instead. +Pre-release tags according to [SemVer 2.0](https://semver.org/) (e.g. `-alpha`, `-beta.1`, `-rc.2`) are detected +automatically and result in an `artifacthub.io/prerelease` annotation instead. ## Usage ### Auto-detect tags -Without explicit inputs the action determines the two most recent non-RC tags from the Git history: +Without explicit inputs the action determines the two most recent stable (non-pre-release) tags from the Git history: ```yaml steps: @@ -58,8 +58,8 @@ steps: ## Pre-releases -Tags matching the pattern `-rc` (e.g. `v1.0.0-rc.1`, `v2.0.0-rc`) are treated as pre-releases. -When `new-tag` is a pre-release tag, the action: +Tags containing a hyphen-separated pre-release identifier according to [SemVer 2.0](https://semver.org/) are treated as +pre-releases (e.g. `v1.0.0-alpha`, `v1.0.0-beta.1`, `v2.0.0-rc.2`). When `new-tag` is a pre-release tag, the action: 1. Sets `artifacthub.io/prerelease: "true"` in `Chart.yaml`. 2. Skips changelog generation entirely. diff --git a/add-annotations.sh b/add-annotations.sh index 416976f..7ae0130 100755 --- a/add-annotations.sh +++ b/add-annotations.sh @@ -7,7 +7,7 @@ set -euo pipefail readonly CHART_FILE="${CHART_FILE:="Chart.yaml"}" -readonly RC_PATTERN="\-rc([-\.][0-9]+)?$" +readonly PRERELEASE_PATTERN="\-[a-zA-Z0-9]+([-\.][a-zA-Z0-9]+)*$" CHANGE_LOG_YAML="" @@ -24,8 +24,8 @@ if [[ ! -f "${CHART_FILE}" ]]; then fi # Determine old and new tags -DEFAULT_NEW_TAG="$(git tag --sort=-version:refname | grep --invert-match --perl-regexp "${RC_PATTERN}" | head --lines 1)" -DEFAULT_OLD_TAG="$(git tag --sort=-version:refname | grep --invert-match --perl-regexp "${RC_PATTERN}" | head --lines 2 | tail --lines 1)" +DEFAULT_NEW_TAG="$(git tag --sort=-version:refname | grep --invert-match --perl-regexp "${PRERELEASE_PATTERN}" | head --lines 1)" +DEFAULT_OLD_TAG="$(git tag --sort=-version:refname | grep --invert-match --perl-regexp "${PRERELEASE_PATTERN}" | head --lines 2 | tail --lines 1)" if [[ -n "${INPUT_OLD_TAG:-}" ]]; then OLD_TAG="${INPUT_OLD_TAG}" @@ -49,7 +49,7 @@ if [[ -z "$(git tag --list "${NEW_TAG}")" ]]; then exit 1 fi -if [[ "${NEW_TAG}" =~ ${RC_PATTERN} ]]; then +if [[ "${NEW_TAG}" =~ ${PRERELEASE_PATTERN} ]]; then echo "INFO: Tag '${NEW_TAG}' is a prerelease, setting prerelease annotation and skipping changelog." yq --no-colors --inplace ".annotations.\"artifacthub.io/prerelease\" = \"true\" | sort_keys(.)" "${CHART_FILE}" exit 0