Files
management/.gitea/ISSUE_TEMPLATE/deploy-uebergabe.yaml
T
Thore CimbalandClaude Opus 5 3e81f40178 verfahren: Deploy-Uebergabe als Standardverfahren, AAR zu gitops#47
Nach dem Deploy der CVE-Pipeline (gitops#47) als Verfahren festgehalten. Der
Stand war korrekt und gelintet; der Blocker entstand erst aus der Datenmenge,
gegen die er lief -- eine Alarm-Instanz pro CVE, real 126 CRITICAL und 1222
HIGH. So etwas faellt in keinem Diff auf, nur beim Messen vor dem Deploy.

Neu:
- .gitea/ISSUE_TEMPLATE/deploy-uebergabe.yaml -- Uebergabe-Issue mit
  Pflichtfeldern Mengengeruest, vollstaendiges Deploy-Kommando, Verifikation
  im laufenden Dienst, Aussenwirkung samt Not-Aus, Rollback
- verfahren/deploy-uebergabe.md -- Ablauf und Pruefliste
- verfahren/aar-vorlage.md -- AAR-Vorlage
- verfahren/aar/2026-08-01-cve-pipeline-gitops47.md -- der ausloesende AAR

Abgrenzung im README ergaenzt: hosts/ und shared/ halten offene Punkte,
verfahren/ haelt, wie wir arbeiten. Die Uebergabe-Issues laufen bewusst hier
statt im Projekt-Repo, weil das Verfahren repo-uebergreifend gilt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 12:00:00 +00:00

108 lines
4.0 KiB
YAML

name: "Deploy-Übergabe"
about: "Ein gebauter, noch nicht ausgerollter Stand wird zum Deploy übergeben"
title: "[DEPLOY] "
body:
- type: markdown
attributes:
value: |
Für die Übergabe „ich habe gebaut — du rollst aus".
Ausführlich: [verfahren/deploy-uebergabe.md](../src/branch/main/verfahren/deploy-uebergabe.md)
Die Felder sind die Punkte, an denen Übergaben real schiefgegangen sind.
Wo nichts zutrifft, `-` eintragen statt das Feld zu löschen.
- type: input
id: stand
attributes:
label: Stand
description: Repo, Branch und Commit, der ausgerollt werden soll
placeholder: "sorb/threadnet-operating @ main, b6007c5"
validations:
required: true
- type: dropdown
id: testtiefe
attributes:
label: Testtiefe
description: Ehrlich einordnen — „ungetestet" ist eine brauchbare Angabe, „läuft" ohne Beleg nicht
options:
- "ungetestet — nur gelintet / statisch geprüft"
- "teilweise getestet — Details unten"
- "getestet gegen echte Daten"
validations:
required: true
- type: textarea
id: mengengeruest
attributes:
label: Mengengerüst
description: |
Wenn der Stand irgendetwas erzeugt (Nachrichten, Alarme, Zeitreihen, Dateien, Requests):
Wie viel davon beim ersten Lauf? Geschätzt oder gemessen — bitte dazuschreiben, was von beidem.
Genau hier entstehen die Überraschungen: „ein Alarm pro Fund" ist harmlos bei 5 Funden und ein Ausfall bei 126.
placeholder: |
Alarme: ~1 pro CVE pro Image. An 3 von 29 Images gemessen: 27 CRITICAL / 126 HIGH.
Zeitreihen: ~2000. Matrix-Nachrichten: 1 pro Alarm.
validations:
required: true
- type: textarea
id: kommando
attributes:
label: Vollständiges Deploy-Kommando
description: |
Inklusive aller Reload-, Restart- und Recreate-Schritte.
Ein `up -d`, das „Running" meldet und nichts tut, ist der häufigste stille Fehlschlag.
render: bash
placeholder: |
cd /opt/<repo> && git pull
cd <stack> && docker compose up -d
docker compose up -d --force-recreate <dienste-mit-geaenderter-config>
validations:
required: true
- type: textarea
id: verifikation
attributes:
label: Woran erkennt man, dass es wirklich greift
description: |
Konkrete Prüfung **dort, wo der Dienst liest** — im Container, in der API, in der laufenden Config.
Ein grüner Linter belegt, dass die Datei gültig ist, nicht dass sie geladen wurde.
render: bash
placeholder: |
docker exec prometheus grep -c axion-cve /etc/prometheus/alerts.yml # erwartet: 1
curl -s localhost:9090/api/v1/rules | grep -c axion-cve # erwartet: >0
validations:
required: true
- type: textarea
id: aussenwirkung
attributes:
label: Außenwirkung und Not-Aus
description: |
Was verlässt beim ersten Lauf das System — Matrix-Räume, Mails, Webhooks, fremde APIs?
Und wie schaltet man **nur diesen Kanal** stumm, ohne den ganzen Deploy zu verschieben?
Datensammlung und Zustellung getrennt scharf zu schalten ist fast immer möglich und
macht aus einer Blockade einen normalen Deploy.
placeholder: |
Kanal: Matrix-Raum „Security" über Label room=security.
Stumm: in alertmanager.yml route room="security" -> receiver "null".
validations:
required: true
- type: textarea
id: rollback
attributes:
label: Rollback
description: Was tun, wenn es schiefgeht — und was davon ist *nicht* zurückholbar (gesendete Nachrichten, externe Writes)?
validations:
required: true
- type: textarea
id: offen
attributes:
label: Bewusst offen gelassen
description: Bekannte Lücken, Nebenfunde, Abgrenzungen. Verhindert, dass die Gegenseite Zeit mit Nachweisen von etwas verbringt, das schon bekannt ist.
validations:
required: false