diff --git a/.gitea/workflows/cd.yml b/.gitea/workflows/cd.yml index 6629f46..fd64605 100644 --- a/.gitea/workflows/cd.yml +++ b/.gitea/workflows/cd.yml @@ -6,12 +6,14 @@ name: CD on: - push: - branches: [main] + workflow_run: + workflows: [CI] + types: [completed] workflow_dispatch: jobs: deploy: + if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} runs-on: [ubuntu-latest] steps: - name: Checkout code diff --git a/.gitea/workflows/pages-deploy.yml b/.gitea/workflows/pages-deploy.yml index 1ce3d7b..522b9b9 100644 --- a/.gitea/workflows/pages-deploy.yml +++ b/.gitea/workflows/pages-deploy.yml @@ -1,12 +1,14 @@ name: Deploy to Cloudflare Pages on: - push: - branches: ["main"] + workflow_run: + workflows: [CI] + types: [completed] workflow_dispatch: {} jobs: deploy: + if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - name: Checkout diff --git a/backend/playout/Dockerfile b/backend/playout/Dockerfile index f4a9419..606311c 100644 --- a/backend/playout/Dockerfile +++ b/backend/playout/Dockerfile @@ -6,7 +6,7 @@ COPY src/go.mod src/go.sum ./ # Download dependencies and build RUN go mod download -RUN CGO_ENABLED=0 GOOS=linux go build -o /playlist-manager ./src/playlist.go +RUN CGO_ENABLED=0 GOOS=linux GOFLAGS=-mod=mod go build -o /playlist-manager ./src/playlist.go FROM alpine:3.20 diff --git a/frontend/src/main.test.ts b/frontend/src/main.test.ts index 59f0c31..61de79d 100644 --- a/frontend/src/main.test.ts +++ b/frontend/src/main.test.ts @@ -353,13 +353,9 @@ describe("player error recovery", () => { await main.initPlayerAndChat(async () => ({ default: HlsMock }) as any); // Find the error handler registered by initPlayerAndChat - const errorCall = HlsMock.mock.results?.[0]?.value?.on?.mock?.calls?.find( - (c: [string, Function]) => c[0] === "hlsError" - ); - // Use hlsInstance.on mock calls - const errorHandler = hlsInstance.on.mock.calls.find( - (c: [string, Function]) => c[0] === "hlsError" - ); + const errorHandler = (hlsInstance.on as any).mock.calls.find( + (c: any) => c[0] === "hlsError" + ) as [string, Function] | undefined; if (errorHandler) { const handler = errorHandler[1]; diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 44cc7f2..16ffa3c 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -198,17 +198,17 @@ export async function initPlayerAndChat(loadHlsModule: () => Promise<{ default: if (playerErrorCount <= 1) { console.warn("HLS media error, attempting recovery..."); showReconnecting("Recovering..."); - hls.recoverMediaError(); + hls!.recoverMediaError(); } else { console.error("HLS media error: recovery failed"); - hls.destroy(); + hls!.destroy(); showReconnecting("Stream temporarily unavailable"); } break; default: console.error("HLS fatal error:", data.type, data.details); - hls.destroy(); + hls!.destroy(); showReconnecting("Stream temporarily unavailable"); break; }