Files
HeiniRemote-AgentFlatpak/scripts/get-latest-version.sh
T
pc-heiniandClaude Fable 5 598eea7ee6
Build and Publish HeiniRemote Agent Flatpak / build (push) Failing after 5m23s
fix(ci): derive fallback version from commit sha only, not build date
With the build date baked into the version string, the nightly cron produced
a fresh version — and thus a new tag, release and bundle — every single day
even when upstream main had not moved. Key the version to the sha alone so a
rebuild happens only when the source actually changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 02:37:46 +02:00

32 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Resolve which HeiniRemote revision to package. Prints eval-able output:
# version=<x.y.z or 0.0.0-git.<sha>>
# ref=<tag name or commit sha>
#
# Prefers the newest v* release tag on the upstream repo; while no release tag
# exists yet, falls back to the tip of main. The fallback version is derived
# ONLY from the commit sha, NOT the build date: the version must be a pure
# function of the source, so the nightly cron rebuilds when main actually
# moves — not every day just because the wall clock advanced (which would spawn
# a new tag/release/bundle daily).
# UPSTREAM_URL may carry credentials (CI injects the actions token for private
# repos); only derived values are printed.
set -euo pipefail
UPSTREAM_URL="${UPSTREAM_URL:-https://git.pc-heini.de/pc-heini/HeiniRemote.git}"
tag=$(git ls-remote --tags "$UPSTREAM_URL" 'refs/tags/v*' \
| awk -F'refs/tags/' '{print $2}' \
| grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' \
| sort -V | tail -n1 || true)
if [ -n "$tag" ]; then
echo "version=${tag#v}"
echo "ref=$tag"
else
sha=$(git ls-remote "$UPSTREAM_URL" refs/heads/main | cut -c1-12)
[ -n "$sha" ] || { echo "ERROR: cannot resolve upstream main" >&2; exit 1; }
echo "version=0.0.0-git.$sha"
echo "ref=$sha"
fi