Was sind Workflows?
Workflows definieren die Abfolge von Aktionen, die während Server-Lifecycle-Events ausgeführt werden. Sie handhaben alles vom Kopieren von Template-Dateien über die Installation von Plugins bis zur Anwendung von Konfigurationen.Wie Workflows funktionieren
Während der Server-Vorbereitung:- Serverhost empfängt eine Start-Anfrage vom Controller
- Lädt den Setup-Workflow aus
workflows/internal/setup.yml - Führt jeden Schritt der Reihe nach mit dem Server-Context aus
- Meldet Status zurück an den Controller
- Server-Stop-Signal empfangen
- Lädt den Cleanup-Workflow aus
workflows/internal/cleanup.yml - Führt Cleanup-Schritte aus (Cache-Push, Verzeichnis-Löschung)
Workflow-Struktur
Workflows sind YAML-Dateien imworkflows/ Verzeichnis:
Eingebaute Workflows
Setup Workflow
Der Standard-Setup-Workflow (workflows/internal/setup.yml) führt aus:
- Cache Pull - Gecachte Dateien von vorherigen Starts kopieren
- Template Copy - Template-Hierarchie anwenden (every, type, software, tagged)
- Plugin Installation - Plugins herunterladen und installieren
- Konfiguration - Configurators für Server-Software anwenden
Cleanup Workflow
Der Cleanup-Workflow (workflows/internal/cleanup.yml) führt aus:
- Cache Push - Wiederverwendbare Dateien für schnellere zukünftige Starts speichern
- Verzeichnis-Löschung - Server-Verzeichnis entfernen
Workflow-Aktionen
copy
Kopiert Dateien oder Verzeichnisse von Quelle zu Ziel.
| Feld | Typ | Beschreibung |
|---|---|---|
from | Pfad | Quell-Datei oder -Verzeichnis |
to | Pfad | Ziel-Datei oder -Verzeichnis |
replace | boolean | Existierende Dateien überschreiben (Standard: true) |
create-dirs | boolean | Elternverzeichnisse erstellen falls fehlend (Standard: true) |
delete
Löscht eine Datei oder ein Verzeichnis.
| Feld | Typ | Beschreibung |
|---|---|---|
path | Pfad | Zu löschende Datei oder Verzeichnis |
force | boolean | Löschen erzwingen (Standard: true) |
for-each
Iteriert über eine Liste und führt verschachtelte Schritte für jedes Element aus.
| Feld | Typ | Beschreibung |
|---|---|---|
items | Liste | Elemente zum Iterieren |
as | string | Variablenname für aktuelles Element |
steps | Liste | Schritte für jedes Element |
plugins-load
Installiert Plugins aus konfigurierten Quellen (Modrinth, Hangar, Spigot, URL).
| Feld | Typ | Beschreibung |
|---|---|---|
dir | Pfad | Verzeichnis für Plugin-Installation |
- Server-Software (Paper, Velocity, etc.)
- Minecraft-Version
- Plattform-Kompatibilität
configurator
Wendet einen Configurator an um Server-Dateien zu konfigurieren.
| Feld | Typ | Beschreibung |
|---|---|---|
configurator | string | Configurator-Name (aus options/configurators/) |
dir | Pfad | Zu konfigurierendes Server-Verzeichnis |
Platzhalter
Workflows unterstützen dynamische Platzhalter, die zur Laufzeit ersetzt werden:Server-Context
| Platzhalter | Beschreibung |
|---|---|
{{server-dir}} | Arbeitsverzeichnis des Servers |
{{server-name}} | Server-Name (z.B. lobby-1) |
{{group}} | Gruppenname |
{{port}} | Zugewiesener Port |
{{max-players}} | Maximale Spieleranzahl |
{{memory}} | Zugewiesener Speicher (MB) |
Pfad-Context
| Platzhalter | Beschreibung |
|---|---|
{{templates}} | Templates-Basisverzeichnis |
{{running}} | Verzeichnis laufender Server |
{{cache}} | Cache-Verzeichnis |
Blueprint-Context
| Platzhalter | Beschreibung |
|---|---|
{{configurator}} | Configurator-Name aus Blueprint |
{{software}} | Server-Software (paper, velocity, etc.) |
{{minecraft-version}} | Minecraft-Version |
{{type}} | Server-Typ (proxy, server, lobby) |
Benutzerdefinierte Properties
Zugriff auf benutzerdefinierte Properties vom Server:$. Präfix greift auf die Properties-Map des Servers zu.
Standard Setup-Ablauf
Der eingebaute Setup-Workflow folgt dieser Reihenfolge:Workflows anpassen
Standard-Workflow überschreiben
Erstelle deinen eigenen Setup-Workflow:Benutzerdefinierte Schritte hinzufügen
Erweitere den Workflow mit zusätzlichen Aktionen:Fehlerbehebung
Workflow wird nicht ausgeführt
- Prüfe ob Workflow-Datei unter
workflows/internal/setup.ymlexistiert - Verifiziere YAML-Syntax
- Prüfe Serverhost-Logs auf Fehler
Platzhalter wird nicht ersetzt
- Stelle sicher, dass Platzhalter-Syntax korrekt ist:
{{name}} - Verifiziere, dass Property im Server-Context existiert
- Für benutzerdefinierte Properties, nutze
{{$.property-name}}
Copy-Aktion schlägt fehl
- Verifiziere, dass Quellpfad existiert
- Prüfe Dateiberechtigungen
- Stelle sicher, dass
create-dirsaktiviert ist wenn Elternverzeichnisse fehlen
Plugin-Installation schlägt fehl
- Prüfe Netzwerkverbindung zu Plugin-Quellen
- Verifiziere, dass Plugin für angegebene Minecraft-Version existiert
- Prüfe
options/modrinth-platform-mappings.ymlfür Software-Mappings