API bauen, testen und veröffentlichen#
Werkzeuge#
.NET 10 SDK und Git installieren. Für echte Datenbanktests wird eine Docker-Laufzeit mit Linux-Containern benötigt. Fertige native Release-Archive brauchen kein SDK auf dem Zielsystem.
git clone https://github.com/LandminenTester/lt-database-api.git
cd lt-database-api
dotnet restore
dotnet build -c Release
dotnet test -c Release
Die Tests prüfen Signaturen, Sicherheit, Request-Verarbeitung, Schema und Abfragen, Zeitpläne, Journal-Wiederherstellung und Provider-Verträge. PostgreSQL 17, MySQL 8.4 und MongoDB 8 werden automatisch in Containern gestartet. Ohne Docker werden diese Tests übersprungen. LDB_SKIP_DOCKER=1 wählt ausdrücklich nur die Tests ohne Container. Linux-CI prüft die Datenbanken, Windows-CI die Unit-Tests.
Lokal entwickeln#
Entwicklungs-Keys auf Test-Namespaces beschränken. Alle drei Provider gleichzeitig mit docker compose -f docker-compose.all.yml up -d --build nach Einrichtung von .env starten. Die Endpunkte liegen dann auf 8081, 8082 und 8083; Key-ID ist standardmäßig gameserver. Das normale Profil-Compose verwendet dagegen Port 8080 und Key main.
Den Python-Client zum Signaturtest verwenden. .env, Produktionskonfiguration, Secrets, Journale und Datenbankinhalte nicht committen.
Native Anwendung#
dotnet publish src/Ldb.Api -c Release -r linux-x64 --self-contained -p:PublishSingleFile=true -p:DebugType=None -o out/linux-x64
Alternativ linux-arm64 oder win-x64. Gesamten Publish-Ordner einschließlich appsettings.json, README und Lizenz verpacken. Programmname: Ldb.Api, unter Windows Ldb.Api.exe. Private Konfiguration und Journal außerhalb ersetzbarer Release-Ordner halten.
Container#
docker build -f docker/Dockerfile -t lt-database-api:local .
Der Container läuft ohne Rootrechte. Secrets zur Laufzeit bereitstellen; bei Journalbetrieb /data dauerhaft und beschreibbar mounten. Bereitstellung beschreibt Netzwerk und TLS.
Release#
- Geprüften Code und Dokumentation committen.
- Vollständige grüne CI inklusive Linux-Datenbanktests abwarten.
- Neuen Versions-Tag
v<version>pushen; vorhandene Tags nicht überschreiben. - Release-Workflow erzeugt drei native Archive, Prüfsummen und versioniertes GHCR-Image plus
latest. - Jobs, heruntergeladene Pakete und Prüfsummen kontrollieren. Ein Tag allein ist kein fertiges Release.
- Dokumentation aus den neuen Quellrevisionen synchronisieren.
Bei Pufferänderungen insbesondere Reihenfolge, angehaltene Flushes, erneute Schema-Validierung und MongoDB-Teilfehler testen. Siehe Write-behind.