Build and Publish HeiniRemote Agent Flatpak / build (push) Failing after 5m23s
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>
32 lines
1.2 KiB
Bash
Executable File
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
|