Gestuftes Ausrollen: scripts/freigeben.sh, README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
86261387aa
commit
d66850c6e8
2 files changed
+58
No files matched your search
@@ -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).
|
||||
Executable
+47
@@ -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."
|
||||
Reference in new issue
Block a user