Gestuftes Ausrollen: scripts/freigeben.sh, README

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5.5 committed 2026-10-13 16:57:13 +02:00
1 parent 86261387aa
commit d66850c6e8
2 files changed
+58

No files matched your search

+11
View File
@@ -60,3 +60,14 @@ Sonderfall `standardbrowser` (13.10.2026): kein Katalog-Merkmal. Der Server schi
3. Eintrag in `site.yml` mit `tags: <name>` und `vars: tuxflotte_state: "{{ tuxflotte_auftrag_states.get('<name>', 'present') }}"` ergänzen
4. Entsprechenden `ansible_role`-Wert in der `blueprints`-Tabelle referenzieren
5. Nur falls die Rolle katalogfähig werden soll (`im_auftragskatalog = true`): Tasks wie oben auf `tuxflotte_state` verzweigen, sonst reicht der additive Pfad ohne `when`
## Gestuftes Ausrollen
Seit 13.10.2026 (platform-docs ADR-0043) gibt es zwei Stände:
- **`ansible-content` (`main`)**: Entwicklungsstand. Geräte von Organisationen mit Ausrollstufe „Vorab“ (Testorganisationen) ziehen ihn bei jedem Check-in.
- **`ansible-content-stabil` (`main`)**: freigegebener Stand. Geräte aller anderen Organisationen ziehen ihn.
Ein Push auf `main` erreicht also nur noch Testgeräte. Freigeben für Kunden: `scripts/freigeben.sh` zeigt, was offen ist, `scripts/freigeben.sh <commit>` zieht den stabilen Stand bis zu diesem Commit vor. Im stabilen Repo wird nichts direkt bearbeitet.
`scripts/pruefe_absent.py` prüft die Abwähl-Zweige der Rollen gegen die Paketlisten der Golden Images (nach jedem neuen Image laufen lassen).
+47
View File
@@ -0,0 +1,47 @@
#!/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."