ci: GitHub-Pages-Deployment via Actions-Workflow

Offizieller Actions-Weg (upload-pages-artifact + deploy-pages) mit
permissions pages/id-token und concurrency-Gruppe "pages"; Trigger:
Push auf main + workflow_dispatch. Vitest-Step als Platzhalter
auskommentiert (Tests folgen, TASKS.md Phase 1).

Site-Aufbau: frontend/index.html an die Wurzel-URL, dazu docs/brand/
(Favicon) und LICENSE (MIT-Link im Footer). Die ../-Pfade der Quelle
zeigten von der Wurzel aus über die Site hinaus; statt den Editor zu
aendern, zieht der Workflow sie nur auf der Site-Kopie per sed gerade
(Editor-Quelle bleibt unveraendert, lokal weiter nutzbar). backend/
und uebrige docs/ werden nicht veroeffentlicht.

Doku: README-Abschnitt "Deployment" (inkl. einmaliger Settings-
Umstellung auf Source "GitHub Actions", Repo muss oeffentlich sein),
TASKS.md-Rubrik "Deployment" abgehakt, DECISIONS D16. Hinweis: der
Auftrag nannte "D15", das war aber schon fuer den kompakten Modus
vergeben -> als D16 angelegt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-07-21 13:14:51 +02:00
co-authored by Claude Opus 4.8
parent 340c7e7195
commit fccd32190a
4 changed files with 119 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
name: Deploy to GitHub Pages
# Veröffentlicht den Frontend-Editor als statische Seite auf GitHub Pages.
# Einmalige Voraussetzung: Repo-Settings → Pages → Source = "GitHub Actions"
# (Repo muss dafür öffentlich sein). Siehe README.md, Abschnitt „Deployment".
on:
push:
branches: [main]
workflow_dispatch:
# Nur Leserechte auf den Code, plus die für die Pages-Deployment-Actions
# nötigen Sonderrechte: pages (Deployment schreiben) und id-token (OIDC-Token,
# das actions/deploy-pages zur Authentifizierung braucht).
permissions:
contents: read
pages: write
id-token: write
# Läuft immer nur ein Deployment gleichzeitig; neue Pushes warten, laufende
# werden nicht abgebrochen (cancel-in-progress: false), damit ein Deploy nicht
# mittendrin unterbrochen wird.
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# Platzhalter für spätere Vitest-Läufe (Tests existieren noch nicht,
# siehe docs/TASKS.md, Phase 1). Bei Aktivierung: Node einrichten und
# Tests ausführen — schlägt der Testlauf fehl, wird nicht deployt.
# - name: Node einrichten
# uses: actions/setup-node@v4
# with:
# node-version: 20
# cache: npm
# - name: Abhängigkeiten installieren
# run: npm ci
# - name: Tests
# run: npm test
# Site-Ordner zusammenstellen: index.html an die Wurzel-URL, dazu die
# vom Editor referenzierten Dateien (Favicon aus docs/brand/, LICENSE für
# den MIT-Link im Footer). Die Editor-Quelle bleibt unverändert — die
# ../-Pfade werden nur auf der Kopie im Site-Ordner geradegezogen, weil
# sie von der Wurzel-URL aus sonst über die Site hinauszeigen würden.
- name: Site zusammenstellen
run: |
mkdir -p site/docs/brand
sed -e 's#\.\./docs/brand/#docs/brand/#g' \
-e 's#\.\./LICENSE#LICENSE#g' \
frontend/index.html > site/index.html
cp docs/brand/* site/docs/brand/
cp LICENSE site/LICENSE
- name: Pages-Konfiguration
uses: actions/configure-pages@v5
- name: Artefakt hochladen
uses: actions/upload-pages-artifact@v3
with:
path: site
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Auf GitHub Pages deployen
id: deployment
uses: actions/deploy-pages@v4
+17
View File
@@ -43,6 +43,23 @@ Elemente einblenden.
- `docs/design/` — Design-Herleitung der Marke
- `CLAUDE.md` — Projektkontext für Claude Code
## Deployment
Der Editor wird per GitHub Actions als statische Seite auf **GitHub Pages**
veröffentlicht (Workflow: `.github/workflows/pages.yml`). Ausgelöst bei jedem
Push auf `main` sowie manuell (`workflow_dispatch`).
Der Workflow stellt einen Site-Ordner zusammen: `frontend/index.html` liegt als
`index.html` an der Wurzel-URL, dazu die vom Editor referenzierten Dateien
(`docs/brand/` fürs Favicon, `LICENSE` für den MIT-Link im Footer). Die
`../`-Pfade der Editor-Quelle werden dabei nur auf der Kopie geradegezogen — die
Quelldatei bleibt unverändert. `backend/` und die übrigen `docs/` werden nicht
veröffentlicht.
**Einmalige Einrichtung:** In den Repo-Settings unter **Pages** als **Source**
„GitHub Actions" wählen. Das Repo muss dafür **öffentlich** sein (GitHub Pages
via Actions ist für private Repos nur mit kostenpflichtigem Plan verfügbar).
## Lizenz
MIT — siehe [LICENSE](LICENSE). © 2026 Michael Hönnig.
+20
View File
@@ -102,3 +102,23 @@ durchgezogene Hauptlinie optisch mit „all of“ konkurrieren. Grau tritt zurü
die gestrichelte Führung bleibt eindeutig. D12/BRAND — „durchgezogen = und,
gestrichelt = oder“ — gilt für das **Markenzeichen** unverändert (Logo behält
Petrol); im **Diagramm** trägt allein der Linienstil die Gate-Codierung.
## D16 — Deployment über GitHub Pages via Actions-Workflow
Der Editor ist eine einzelne statische Datei (D11) — GitHub Pages genügt, kein
eigener Server nötig. Veröffentlicht wird über den offiziellen Actions-Weg
(`actions/upload-pages-artifact` + `actions/deploy-pages`, `permissions:
pages/id-token`, `concurrency: pages`) statt über den `gh-pages`-Branch: kein
Zusatz­branch, OIDC statt Deploy-Key, Trigger bei Push auf `main` und manuell.
Der Test-Step (Vitest, Phase 1) ist als Platzhalter auskommentiert vorbereitet.
**Pfad-Entscheidung:** `frontend/index.html` referenziert Favicon und
MIT-Lizenz relativ mit `../` (`../docs/brand/favicon.svg`, `../LICENSE`) — von
der Wurzel-URL aus zeigten diese über die Site hinaus. Statt die Quelldatei zu
ändern (D14/CLAUDE: „Editor nicht refaktorieren“) zieht der Workflow die
`../`-Pfade **nur auf der Site-Kopie** gerade (`sed`) und legt die referenzierten
Dateien passend ab: `index.html` an die Wurzel, `docs/brand/` und `LICENSE`
daneben. So bleibt die Quelle unverändert (lokal weiter per `file://` und
Dev-Server nutzbar), und veröffentlicht wird nur das Nötige — `backend/` und die
übrigen `docs/` bleiben außen vor.
(Nummerierung: D15 war bereits für den kompakten Modus vergeben, daher D16.)
+4
View File
@@ -19,6 +19,10 @@ Abhaken beim Erledigen; neue Aufgaben unten anfügen.
- [ ] Druck-Stylesheet (Diagramm ohne Editor-Panel).
- [ ] Fehlertolerantes Parsen weiter ausbauen (unbekannte Statuszeichen melden).
## Deployment
- [x] GitHub-Pages-Workflow angelegt (`.github/workflows/pages.yml`,
siehe docs/DECISIONS.md D16).
## Phase 3 — Integrationen (siehe docs/ROADMAP.md)
- [ ] Backend-Gerüst per Spring Initializr in `backend/` anlegen
(Kotlin, Gradle Kotlin DSL, JDK 21; Konventionen: backend/CLAUDE.md).