Skip to main content
MusicVoting
  1. Technical Docs/

CI/CD & Deployment

·207 words·1 min·
Developer
Table of Contents

Die App ist im HTL-Leonding-Cluster deployed und unter https://it220241.cloud.htl-leonding.ac.at erreichbar.

Workflows (GitHub Actions)
#

WorkflowTriggerAufgabe
.github/workflows/build-push-deploy.ymlPush auf main (Pfade musicvoting/**, k8s/**) + manuellApp bauen, Images pushen, deployen
.github/workflows/hugo.yamlPush auf main (Pfad hugo/**)Diese Doku-Website nach GitHub Pages bauen

App-Pipeline (build-push-deploy)
#

  1. Build & Push: Backend- und Frontend-Image werden gebaut und nach GHCR gepusht (ghcr.io/2526-4ahitm-itp/music-voting-backend und …-frontend, Tags latest + Commit-SHA).
  2. Deploy: kubectl apply -f k8s/ im Namespace student-it220241.
  3. Rollout: kubectl rollout restart für Backend und Frontend, damit die neuen Images gezogen werden, danach rollout status (Timeout 120 s).

Kubernetes-Manifests (k8s/)
#

DateiInhalt
01-postgres.yamlPostgreSQL-Deployment + Service
02-backend.yamlBackend-Deployment + Service (Port 8080), Env-Variablen
03-frontend.yamlFrontend-Deployment + Service (Port 80)
ingress.yamlIngress (nginx) für it220241.cloud.htl-leonding.ac.at
  • Ingress-Routing: /api (sowie /graphql, /ws) → Backend (8080), alles übrige → Frontend (80).
  • Backend-Env zeigt auf die Produktions-URLs (APP_PUBLIC_HOST, *_REDIRECT_URI, MUSICVOTING_JOIN_BASE_URL) und die DB (QUARKUS_DATASOURCE_* → Service postgres).
  • Secrets: SPOTIFY_CLIENT_ID/SECRET kommen aus dem Kubernetes-Secret spotify-credentials, nicht aus application.properties. Images werden über ghcr-pull-secret gezogen.
Note

KUBE_CONFIG und GITHUB_TOKEN liegen als GitHub-Actions-Secrets vor und sind nicht im Repository.

Lokal mit denselben Images
#

Unter compose/ liegt ein Docker-Compose-Stack, der die GHCR-Images plus PostgreSQL startet – siehe Variante A in

How To Run
·643 words·4 mins
Developer
.