Skip to content

Conversation

@daixtrose
Copy link
Contributor

Automatische "Nächste Termine" Generierung für GitHub Pages

Problem: Eingebauter Pages Workflow ermöglicht kein Preprocessing

Da ihr den eingebauten GitHub Pages Workflow nutzt, haben wir keinen direkten Zugriff auf den Build-Prozess. Der eingebaute Workflow führt Jekyll direkt aus, ohne Möglichkeit für Preprocessing-Schritte.

Lösung: Umstellung auf eigenen GitHub Actions Workflow

Die einzige Möglichkeit, Preprocessing vor dem Jekyll-Build zu integrieren, ist die Umstellung auf einen eigenen GitHub Actions Workflow. Dieser repliziert das Standard-Pages-Verhalten, fügt aber das gewünschte Preprocessing hinzu.


Schritt 1: Repository Settings ändern

  1. Gehe zu Settings → Pages
  2. Ändere "Build and deployment" source von "Deploy from a branch" zu "GitHub Actions"

GitHub Actions Option


Schritt 2: Workflow erstellen

Erstelle die Datei .github/workflows/pages.yml:

Wichtige Merkmale:

  • Repliziert das Standard-GitHub-Pages-Verhalten 1:1
  • Fügt Python-Preprocessing vor Jekyll-Build hinzu
  • Nutzt offizielle GitHub Actions (configure-pages, upload-pages-artifact, deploy-pages)
  • Erhält alle Jekyll-Konfigurationen und -Features

Schritt 3: Python Script erstellen

Erstelle das Verzeichnis scripts/ und darin die Datei render_next_meetings.py:

Script-Features:

  • Verwendet nur Python-Standardbibliothek (keine externen Dependencies)
  • Deutsche Datums- und Uhrzeitformatierung
  • Filtert automatisch vergangene Events heraus
  • Kürzt Beschreibungen und Ortsangaben für bessere Lesbarkeit
  • Robust gegen fehlende oder fehlerhafte Daten

Schritt 4: README.md anpassen

Ersetze den bestehenden Abschnitt "## Termine" durch:

## Termine

{{ NEXT_MEETINGS }}

Der Platzhalter {{ NEXT_MEETINGS }} wird beim Build automatisch durch die Liste der zukünftigen Termine ersetzt.


Schritt 5: Testen

  1. Committe alle Dateien:

    • .github/workflows/pages.yml
    • scripts/render_next_meetings.py
    • Aktualisierte README.md mit Platzhalter
  2. Push zum main Branch - der Workflow startet automatisch

  3. Überprüfe den Build:

    • Gehe zu Actions Tab im Repository
    • Sieh dir die Logs der "Generate NEXT_MEETINGS in README" Step an
  4. Verifiziere das Ergebnis:

    • Die generierte Website sollte die aktuellen Termine anzeigen
    • Vergangene Termine sollten automatisch ausgeblendet werden

Beispiel-Output

Das Script generiert Markdown wie:

## Termine

Wir streben einen (grob) zwei-monatigen Rhythmus an. Weitere Informationen über [Meetup](https://www.meetup.com/de-DE/C-User-Gruppe-Aachen).

- **Mittwoch, 03. December 2025, 18:30Uhr**, [Utimaco, Germanusstraße 4, 52080 Aachen](https://www.google.com/maps/search/?api=1&query=Utimaco,+Germanusstraße+4,+52080+Aachen)
  - Safer Integer Handling with Modern C++ (John Franklin Rickard)
  - ASIO & Coro - Networking Programming with C++20 Coroutines (Peter Eisenlohr)
- **Mittwoch, 03. December 2025, 22:30Uhr**, [Guinness House, Neupforte 6, 52062 Aachen](https://www.google.com/maps/search/?api=1&query=Guinness+House,+Neupforte+6,+52062+Aachen)
  - Und nachher noch nett zusammensitzen
- **Mittwoch, 04. February 2026, 18:30Uhr**, [ModuleWorks, Henricistraße 50-52, 52072 Aachen](https://www.google.com/maps/search/?api=1&query=ModuleWorks,+Henricistraße+50-52,+52072+Aachen)
  - TBD
- **Mittwoch, 01. April 2026, 18:30Uhr**, [SLB, Ritterstraße 23, 52072 Aachen](https://www.google.com/maps/search/?api=1&query=SLB,+Ritterstraße+23,+52072+Aachen)
  - TBD
- **Mittwoch, 03. June 2026, 18:30Uhr**, [Magma, Kackertstraße 16-18, 52072 Aachen](https://www.google.com/maps/search/?api=1&query=Magma,+Kackertstraße+16-18,+52072+Aachen)
  - TBD

Wartung und Anpassungen

Anpassung der Anzahl angezeigter Termine

Im Script die Zeile events = events[:6] ändern (aktuell: 6 Termine)

Anpassung des Datumsformats

Deutsche Monatsnamen und Wochentage sind in den Dictionaries GERMAN_MONTHS und GERMAN_WEEKDAYS definiert

Anpassung der Ausgabeformatierung

Die Funktion generate_markdown() kann nach Bedarf angepasst werden


Warum die KI meint, dass diese Lösung optimal ist

  1. Minimal-invasiv: Repliziert das Standard-Pages-Verhalten
  2. Robust: Verwendet nur Standardbibliotheken, keine externen Dependencies
  3. Automatisch: Läuft bei jedem Push und aktualisiert die Termine
  4. Wartungsarm: Termine werden automatisch aus der JSON-Datei gelesen
  5. Zukunftssicher: Vergangene Termine werden automatisch ausgeblendet

@daixtrose daixtrose requested a review from d-frey October 17, 2025 23:54
@daixtrose
Copy link
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants