# Stages und Branches

<p class="callout info">Zielgruppe: Anwender und Betreuer · Stand: 06.11.2026</p>

Jedes Deployment-Repo kennt vier Stages, und jede Stage ist ein eigener Branch. Ein Commit wandert von Stage zu Stage. Ob er weiterwandert, entscheiden feste Gates: mal manuell, mal automatisch.

## Die vier Stages

| Stage = Branch | Zweck | Weiter zur nächsten Stage |
|---|---|---|
| `pre-development` | Einstieg, Default-Branch; im Lab die einzige Stage | manuell (`promote-next-branch`) |
| `development` | Entwicklungsumgebung | automatisch |
| `staging` | Abnahme vor Produktion | manuell (`approve-and-promote-production`) |
| `production` | Produktion | – |

- Einen `main`-Branch gibt es nicht.
- Jede Stage hat ihren eigenen Terraform-State. Der State-Name ist der Branch-Name.
- Alle vier Stage-Branches sind geschützt. Daran hängen Secrets und Freigaben.

## Stages ein- und ausschalten

- `enabled-stages` legt fest, welche Stages wirklich deployen. Inaktive Stages laufen in der Kaskade mit, ändern aber nichts.
- `promote-from` und `promote-to` begrenzen die Kaskade. `promote-to: pre-development` ist der Lab-Modus ohne Promotion.
- Eine Stage wird erst aktiv, wenn ihre Hosts definiert und ihre Variablen gesetzt sind.

## Wie die Stage an anderen Stellen heißt

| Ort | Schreibweise |
|---|---|
| Branch, OpenBao-Pfad, Terraform (`TF_VAR_deployment_stage`) | `pre-development`, `development`, `staging`, `production` |
| Maschinen-Module (VM-Variable `stage`) | nur `dev`, `mngmt`, `prd`. Lab-VMs laufen als `dev`, `staging` läuft mit `prd` |
| Consul-KV und Namen im Lab | `lab`, z. B. `services/lab/…` |

<p class="callout warning">Das sind drei Vokabulare für ähnliche Dinge. Für Secret-Pfade gilt immer der Branch-Name. <code>lab</code>, <code>dev</code> oder <code>prd</code> im OpenBao-Pfad findet keine Pipeline.</p>

## Weiterführend

- [Lab, DEV und Produktion](https://docs.squeeze.one/books/developer-good-practice/page/lab-dev-und-produktion)
- [README der CI-Component, Abschnitte „Promotion“ und „Stages und Kippschalter“](https://gitlab.dexpro.services/cloud-core-infrastructure/ci-components/deployment)