Skip to content

Chore: derive base release version from git tag instead of hardcoded YAML - #329

Merged
plz12345 merged 2 commits into
eros-developfrom
chore/tag-based-versioning
Jul 18, 2026
Merged

Chore: derive base release version from git tag instead of hardcoded YAML#329
plz12345 merged 2 commits into
eros-developfrom
chore/tag-based-versioning

Conversation

@plz12345

Copy link
Copy Markdown
Contributor

Database Migration

NO

Description

Moves the base release version out of build_v3.yml. Today 3.3.4 is hardcoded
in two spots (VERSION and WHISPARR_ASSEMBLY_VERSION), so bumping it means
editing the workflow and landing that number into both eros-develop and eros
via dedicated version-bump PRs.

Instead, the prepare job now resolves the base version at build time from the
highest strictly-vX.Y.Z tag reachable from the building branch
(git tag --merged HEAD + strict ^v[0-9]+\.[0-9]+\.[0-9]+$ regex + version
sort), falling back to VERSION_FALLBACK (3.3.4) until a base tag exists. The
strict regex is deliberate: it rejects both the CI-minted -develop.N/-release.N
tags and the ~370 legacy 4-part vX.Y.Z.B tags inherited from upstream (glob /
git describe can't separate 3-part from 4-part). git run_number stays the
build counter, so the per-build release tags keep their X.Y.Z-develop.N /
X.Y.Z-release.N shape that the client updater parses — no client-facing change.

The assembly version becomes a prepare output threaded into the build action as
a new assembly_version input. deploy.yml is unchanged; it keeps minting and
GPG-signing the per-build release tags exactly as before.

Result: bumping a version is a single git push origin vX.Y.Z — no YAML edit and
no version-bump PRs. Branch-based triggering, the dual-branch layout, and the
eros-developeros promotion PR all stay as they are.

Because no base tag exists yet, this build (and every build until a vX.Y.Z tag
is pushed) resolves the 3.3.4 fallback and produces the same 3.3.4-develop.N
version string as today — the cutover is silent and only diverges once a marker
tag is pushed.

Screenshot(s) (if UI related)

N/A — CI workflow change, no UI.

Todos

  • Tests — N/A: CI workflow logic, not application code. The tag-resolution
    shell was validated locally under bash -eo pipefail (no-match → fallback;
    match → highest by numeric sort with minted/legacy tags excluded), and the
    workflow passes actionlint (incl. shellcheck on the run: block).
  • Translation Keys — N/A: no user-facing strings.

Issues Fixed or Closed by this PR

N/A

plz12345 added 2 commits July 18, 2026 14:07
…YAML

The base version (3.3.4) was hardcoded in two spots of build_v3.yml, so
bumping it required editing the workflow and landing that number into both
eros-develop and eros through dedicated version-bump PRs.

Resolve the base version at build time from the highest strictly-vX.Y.Z tag
reachable from the building branch (git tag --merged + strict regex + version
sort), falling back to VERSION_FALLBACK before any base tag exists. run_number
stays the build counter, so the per-build release tags keep their
X.Y.Z-develop.N / X.Y.Z-release.N shape that the updater parses. Assembly
version becomes a prepare-job output threaded into the build action as a new
assembly_version input.

Bumping a version is now a single tag push (git push origin vX.Y.Z); no YAML
edit and no version-bump PRs. deploy.yml is unchanged.
@sonarqubecloud

Copy link
Copy Markdown

@plz12345
plz12345 merged commit 39b1db6 into eros-develop Jul 18, 2026
38 checks passed
@plz12345
plz12345 deleted the chore/tag-based-versioning branch July 18, 2026 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant