Files
Vocaluxe/.gitea/workflows/song-server.yml
T
Simon DiesenreiterandClaude Opus 5.5 efcc63a640 Song server: central song library with on-demand downloads
- VocaluxeSongServer: ASP.NET Core server that scans an UltraStar library and
  serves the song list (ETag), single files (Range) and zip bundles; optional
  API key; Dockerfile and Gitea workflow for git.disi.dev/projects/vocaluxe-song-server
- Game: config section SongServer (Url, ApiKey). At song loading, the song text
  files are mirrored into a local cache that is loaded like a song folder;
  without connection the last library is used
- VocaluxeLib: CSongFiles hook for all song file access; media are downloaded on
  demand (covers in the background, preview audio, everything before singing
  with progress in the sing screen)
- Tests for scanner, API and downloads (incl. resume); AGENTS.md for the fork

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 17:23:00 +01:00

48 lines
1.6 KiB
YAML

# Builds the song server image and pushes it to the Gitea registry:
# git.disi.dev/projects/vocaluxe-song-server:<version> and :latest
# Release: set VocaluxeSongServer/VERSION, then push the tag songserver-v<version> (e.g. songserver-v0.1.0).
# Manual runs (workflow_dispatch) push :dev only.
name: Song server image
env:
DOCKER_API_VERSION: '1.43'
IMAGE: git.disi.dev/projects/vocaluxe-song-server
on:
push:
tags:
- 'songserver-v*'
workflow_dispatch:
jobs:
image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Determine tags
id: tags
run: |
VERSION=$(tr -d '[:space:]' < VocaluxeSongServer/VERSION)
if [ "${GITHUB_REF_TYPE}" = "tag" ]; then
if [ "${GITHUB_REF_NAME}" != "songserver-v${VERSION}" ]; then
echo "Tag ${GITHUB_REF_NAME} does not match VocaluxeSongServer/VERSION (${VERSION})"
exit 1
fi
echo "tags=${VERSION} latest" >> "$GITHUB_OUTPUT"
else
echo "tags=dev" >> "$GITHUB_OUTPUT"
fi
- name: Login to Gitea container registry
uses: docker/login-action@v3
with:
username: gitearobot
password: ${{ secrets.PACKAGE_GITEA_PAT }}
registry: git.disi.dev
- name: Build and publish
run: |
docker build -t "${IMAGE}:build" -f VocaluxeSongServer/Dockerfile .
for TAG in ${{ steps.tags.outputs.tags }}; do
docker tag "${IMAGE}:build" "${IMAGE}:${TAG}"
docker push "${IMAGE}:${TAG}"
done