diff --git a/.github/workflows/deploy-proxmox.yml b/.github/workflows/deploy-proxmox.yml new file mode 100644 index 00000000..b7deac45 --- /dev/null +++ b/.github/workflows/deploy-proxmox.yml @@ -0,0 +1,56 @@ +# Name des Workflows (erscheint im Actions-Tab auf GitHub) +name: Build and Deploy Ktor Server to Proxmox + +# Trigger: Wann soll der Workflow starten? +on: + # Bei jedem Push auf den 'main' Branch + push: + branches: [ main ] + # Erlaubt auch das manuelle Starten über den Actions-Tab + workflow_dispatch: + +# Definition der auszuführenden Jobs +jobs: + # Ein Job namens 'build-and-deploy' (Name ist frei wählbar) + build-and-deploy: + # Angezeigter Name für den Job auf GitHub + name: Build and Deploy Ktor Server + + # WICHTIG: Dieser Job MUSS auf deinem selbst gehosteten Runner laufen! + # Stelle sicher, dass die Labels hier (mindestens 'self-hosted') + # mit den Labels deines Runners übereinstimmen. + runs-on: self-hosted + + # Die Schritte, die in diesem Job ausgeführt werden + steps: + # Schritt 1: Code aus dem Repository holen + # verwendet die Standard-Action von GitHub dafür + - name: Check out repository code + uses: actions/checkout@v4 + + # Schritt 2: Docker Image für den Ktor-Server bauen + # verwendet die 'Dockerfile' im Hauptverzeichnis des Projekts. + # Taggt das Image als 'meldestelle/server: latest' (muss zum Compose-File passen) + - name: Build Docker image + # Führt 'docker build' im Root-Verzeichnis des ausgecheckten Codes aus + run: docker build -t meldestelle/server:latest . + + # Schritt 3: Anwendung via Docker Compose starten/aktualisieren + # stellt alle in docker-compose.yml definierten Services bereit + - name: Deploy application via Docker Compose + # Macht die GitHub Secrets als Umgebungsvariablen NUR für diesen Schritt verfügbar + env: + POSTGRES_USER: ${{ secrets.POSTGRES_USER }} + POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} + POSTGRES_DB: ${{ secrets.POSTGRES_DB }} + # Füge hier optional weitere Secrets hinzu, die deine Compose-Datei braucht + # z.B. PGADMIN_DEFAULT_PASSWORD: ${{ secrets.PGADMIN_PASSWORD }} + # Führt 'docker compose up' aus. + # Docker Compose liest die oben gesetzten ENV-Variablen und verwendet sie für die + # Ersetzung von ${...} in der docker-compose.yml (z.B. für den 'db' Service). + # Der 'server' Service bekommt seine DB-Variablen auch über die 'environment'-Sektion + # in der docker-compose.yml, die ebenfalls diese ENV-Variablen nutzt. + # --build: Baut Images neu, falls nötig (besonders wichtig für den 'server'-Service) + # -d: Startet Container im Hintergrund + # --force-recreate: Erzwingt Neuerstellung, kann helfen, alte Zustände zu vermeiden + run: docker compose up --build -d --force-recreate \ No newline at end of file diff --git a/server/src/main/kotlin/at/mocode/plugins/Database.kt b/server/src/main/kotlin/at/mocode/plugins/Database.kt index 53f52949..a15a9bca 100644 --- a/server/src/main/kotlin/at/mocode/plugins/Database.kt +++ b/server/src/main/kotlin/at/mocode/plugins/Database.kt @@ -2,11 +2,10 @@ package at.mocode.plugins import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariDataSource -import io.ktor.server.application.* import org.jetbrains.exposed.sql.Database import org.slf4j.LoggerFactory -fun Application.configureDatabase() { +fun configureDatabase() { val log = LoggerFactory.getLogger("DatabaseInitialization") log.info("Initializing database connection from environment variables...")