48 lines
2.0 KiB
Bash
Executable File
48 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
# Gestuftes Ausrollen (13.10.2026, platform-docs ADR-0043): Kundengeräte
|
|
# ziehen die Rollen aus dem Repo ansible-content-stabil, Testorganisationen
|
|
# aus ansible-content (main). Dieses Skript gibt einen geprüften Stand von
|
|
# main frei, indem es ihn ins stabile Repo vorzieht.
|
|
#
|
|
# scripts/freigeben.sh zeigt, was freizugeben wäre
|
|
# scripts/freigeben.sh <commit> gibt bis einschließlich <commit> frei
|
|
#
|
|
# Nur vorwärts (kein --force): Ein Zurücksetzen des stabilen Stands ist eine
|
|
# bewusste Handarbeit, kein Tippfehler-Risiko dieses Skripts.
|
|
|
|
STABIL_URL="${TUXFLOTTE_STABIL_URL:-https://git.tuxflotte.de/admin/ansible-content-stabil.git}"
|
|
|
|
cd "$(git rev-parse --show-toplevel)"
|
|
git remote get-url stabil >/dev/null 2>&1 || git remote add stabil "${STABIL_URL}"
|
|
git fetch --quiet origin main
|
|
git fetch --quiet stabil main
|
|
|
|
stabil="$(git rev-parse stabil/main)"
|
|
echo "Freigegeben (stabil): $(git log -1 --format='%h %ad %s' --date=short "${stabil}")"
|
|
|
|
if [[ $# -eq 0 ]]; then
|
|
offen="$(git log --format=' %h %ad %s' --date=short "${stabil}..origin/main")"
|
|
if [[ -z "${offen}" ]]; then
|
|
echo "Nichts offen: stabil entspricht main."
|
|
else
|
|
echo "Noch nicht freigegeben (neueste zuerst):"
|
|
echo "${offen}"
|
|
echo "Freigeben mit: scripts/freigeben.sh <commit>"
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
ziel="$(git rev-parse --verify "$1^{commit}")"
|
|
git merge-base --is-ancestor "${ziel}" origin/main ||
|
|
{ echo "Fehler: $1 liegt nicht auf origin/main." >&2; exit 1; }
|
|
git merge-base --is-ancestor "${stabil}" "${ziel}" ||
|
|
{ echo "Fehler: $1 liegt vor dem freigegebenen Stand (nur vorwärts)." >&2; exit 1; }
|
|
[[ "${ziel}" != "${stabil}" ]] || { echo "Schon freigegeben."; exit 0; }
|
|
|
|
echo "Gebe frei:"
|
|
git log --format=' %h %ad %s' --date=short "${stabil}..${ziel}"
|
|
git push stabil "${ziel}:refs/heads/main"
|
|
echo "Freigegeben bis $(git log -1 --format='%h %s' "${ziel}"). Kundengeräte übernehmen den Stand beim nächsten Check-in."
|