From 1ca7545f8676d3d2a2139482c960ce2b78663a31 Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Tue, 13 Jan 2026 08:37:26 +0100 Subject: [PATCH] Add photobooth uploader build service --- docker-compose.dokploy.yml | 19 +++++++++++ scripts/build-photobooth-uploader.sh | 48 ++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 scripts/build-photobooth-uploader.sh diff --git a/docker-compose.dokploy.yml b/docker-compose.dokploy.yml index f4e8c13..f02931a 100644 --- a/docker-compose.dokploy.yml +++ b/docker-compose.dokploy.yml @@ -106,6 +106,24 @@ services: condition: service_healthy restart: "no" + photobooth-uploader-build: + image: mcr.microsoft.com/dotnet/sdk:10.0 + working_dir: /var/www/html + command: + - bash + - -lc + - /var/www/html/scripts/build-photobooth-uploader.sh + environment: + DOTNET_CLI_TELEMETRY_OPTOUT: "1" + NUGET_PACKAGES: /root/.nuget/packages + volumes: + - app-code:/var/www/html + - nuget-cache:/root/.nuget/packages + depends_on: + app: + condition: service_healthy + restart: "no" + help-sync: image: ${APP_IMAGE_REPO:-fotospiel-app}:${APP_IMAGE_TAG:-latest} env_file: @@ -340,6 +358,7 @@ volumes: external: true name: fotospiel-${APP_ENV:-prod}-storage app-bootstrap-cache: + nuget-cache: photobooth-import: photobooth-ftp-auth: mysql-data: diff --git a/scripts/build-photobooth-uploader.sh b/scripts/build-photobooth-uploader.sh new file mode 100644 index 0000000..af595dc --- /dev/null +++ b/scripts/build-photobooth-uploader.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +set -euo pipefail + +WORKDIR=${WORKDIR:-/var/www/html} +SRC_DIR="${WORKDIR}/clients/photobooth-uploader/PhotoboothUploader" +OUT_DIR="${WORKDIR}/public/downloads" +OUT_FILE="${OUT_DIR}/PhotoboothUploader.exe" +STAMP_FILE="${OUT_DIR}/photobooth-uploader.hash" + +if [[ ! -d "$SRC_DIR" ]]; then + echo "[photobooth-uploader] Source directory not found: ${SRC_DIR}" + exit 0 +fi + +mkdir -p "$OUT_DIR" + +compute_hash() { + find "$SRC_DIR" -type f \ + -not -path "*/bin/*" \ + -not -path "*/obj/*" \ + -print \ + | LC_ALL=C sort \ + | xargs sha256sum \ + | sha256sum \ + | awk '{print $1}' +} + +HASH=$(compute_hash) + +if [[ -f "$OUT_FILE" && -f "$STAMP_FILE" ]]; then + CURRENT_HASH=$(cat "$STAMP_FILE" || true) + if [[ "$CURRENT_HASH" == "$HASH" ]]; then + echo "[photobooth-uploader] Up to date, skipping publish." + exit 0 + fi +fi + +echo "[photobooth-uploader] Publishing uploader exe..." +dotnet publish "${SRC_DIR}/PhotoboothUploader.csproj" \ + -c Release \ + -r win-x64 \ + --self-contained true \ + /p:PublishSingleFile=true \ + /p:IncludeNativeLibrariesForSelfExtract=true \ + -o "$OUT_DIR" + +echo "$HASH" > "$STAMP_FILE" +echo "[photobooth-uploader] Published to ${OUT_FILE}"