fix game
Some checks failed
Dynamic Branch Deploy / build-and-deploy (push) Failing after 8m27s
Some checks failed
Dynamic Branch Deploy / build-and-deploy (push) Failing after 8m27s
This commit is contained in:
2
.github/workflows/deploy.yaml
vendored
2
.github/workflows/deploy.yaml
vendored
@@ -162,10 +162,12 @@ jobs:
|
|||||||
|
|
||||||
# Ingress und App-Manifest anpassen
|
# Ingress und App-Manifest anpassen
|
||||||
sed -i "s|\${APP_URL}|${{ env.APP_URL }}|g" k8s/ingress.yaml
|
sed -i "s|\${APP_URL}|${{ env.APP_URL }}|g" k8s/ingress.yaml
|
||||||
|
sed -i "s|\${TARGET_NS}|${{ env.TARGET_NS }}|g" k8s/ingress.yaml
|
||||||
sed -i "s|\${IMAGE_NAME}|${{ env.DEPLOY_IMAGE }}|g" k8s/app.yaml
|
sed -i "s|\${IMAGE_NAME}|${{ env.DEPLOY_IMAGE }}|g" k8s/app.yaml
|
||||||
|
|
||||||
# Anwenden
|
# Anwenden
|
||||||
echo "Deploying to Namespace: ${{ env.TARGET_NS }} (Image: ${{ env.DEPLOY_IMAGE }})"
|
echo "Deploying to Namespace: ${{ env.TARGET_NS }} (Image: ${{ env.DEPLOY_IMAGE }})"
|
||||||
|
kubectl apply -f k8s/compress-middleware.yaml -n ${{ env.TARGET_NS }}
|
||||||
kubectl apply -f k8s/pvc.yaml -n ${{ env.TARGET_NS }}
|
kubectl apply -f k8s/pvc.yaml -n ${{ env.TARGET_NS }}
|
||||||
kubectl apply -f k8s/nats.yaml -n ${{ env.TARGET_NS }}
|
kubectl apply -f k8s/nats.yaml -n ${{ env.TARGET_NS }}
|
||||||
kubectl apply -f k8s/redis.yaml -n ${{ env.TARGET_NS }}
|
kubectl apply -f k8s/redis.yaml -n ${{ env.TARGET_NS }}
|
||||||
|
|||||||
@@ -34,8 +34,11 @@ RUN echo "🗜️ Komprimiere Bilder..." && \
|
|||||||
# Server binary bauen
|
# Server binary bauen
|
||||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-w -s" -o server ./cmd/server
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-w -s" -o server ./cmd/server
|
||||||
|
|
||||||
# WASM Client bauen
|
# WASM Client bauen (mit Strip-Flags: -w entfernt Debug-Info, -s entfernt Symbol-Tabelle)
|
||||||
RUN GOOS=js GOARCH=wasm go build -o cmd/client/web/main.wasm ./cmd/client
|
RUN GOOS=js GOARCH=wasm go build -ldflags="-w -s" -o cmd/client/web/main.wasm ./cmd/client
|
||||||
|
|
||||||
|
# Unnötige Audio-Dateien entfernen (game.wav = 40MB, nur game.mp3 wird verwendet)
|
||||||
|
RUN rm -f cmd/client/web/assets/game.wav
|
||||||
|
|
||||||
# Stage 2: Production Image
|
# Stage 2: Production Image
|
||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ func SetupGinServer(ec *nats.EncodedConn, port string) *gin.Engine {
|
|||||||
// Cache Control Middleware für statische Assets
|
// Cache Control Middleware für statische Assets
|
||||||
r.Use(func(c *gin.Context) {
|
r.Use(func(c *gin.Context) {
|
||||||
path := c.Request.URL.Path
|
path := c.Request.URL.Path
|
||||||
// Assets (Bilder, Fonts, etc.) - 1 Jahr cachen
|
// Assets (Bilder, Audio, etc.) - 1 Jahr cachen
|
||||||
if len(path) > 7 && path[:8] == "/assets/" {
|
if len(path) > 7 && path[:8] == "/assets/" {
|
||||||
c.Header("Cache-Control", "public, max-age=31536000, immutable")
|
c.Header("Cache-Control", "public, max-age=31536000, immutable")
|
||||||
}
|
}
|
||||||
@@ -40,6 +40,14 @@ func SetupGinServer(ec *nats.EncodedConn, port string) *gin.Engine {
|
|||||||
if (path == "/main.wasm" || path == "/game.js" || path == "/wasm_exec.js") && c.Query("v") != "" {
|
if (path == "/main.wasm" || path == "/game.js" || path == "/wasm_exec.js") && c.Query("v") != "" {
|
||||||
c.Header("Cache-Control", "public, max-age=31536000, immutable")
|
c.Header("Cache-Control", "public, max-age=31536000, immutable")
|
||||||
}
|
}
|
||||||
|
// CSS und Hintergrundbild - 1 Tag cachen
|
||||||
|
if path == "/style.css" || path == "/background.jpg" {
|
||||||
|
c.Header("Cache-Control", "public, max-age=86400")
|
||||||
|
}
|
||||||
|
// HTML - immer neu laden (enthält BUILD_VERSION für Cache-Busting der JS/WASM)
|
||||||
|
if path == "/" || path == "/index.html" {
|
||||||
|
c.Header("Cache-Control", "no-cache")
|
||||||
|
}
|
||||||
c.Next()
|
c.Next()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
annotations:
|
annotations:
|
||||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: web, websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: web, websecure
|
||||||
traefik.ingress.kubernetes.io/router.middlewares: gitea-redirect-https@kubernetescrd
|
traefik.ingress.kubernetes.io/router.middlewares: gitea-redirect-https@kubernetescrd,${TARGET_NS}-compress@kubernetescrd
|
||||||
spec:
|
spec:
|
||||||
ingressClassName: traefik
|
ingressClassName: traefik
|
||||||
tls:
|
tls:
|
||||||
|
|||||||
Reference in New Issue
Block a user