From 1525215757f592fec4eb143bc3f97a4b33c0c9f1 Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Fri, 28 Jun 2024 11:36:45 +0200 Subject: [PATCH] Added versioning --- Moonlight/Core/Services/MoonlightService.cs | 40 +++++++++++++++++++ Moonlight/Core/UI/Views/Admin/Sys/Index.razor | 32 ++++++++++++--- Moonlight/Dockerfile | 14 +++++++ 3 files changed, 81 insertions(+), 5 deletions(-) diff --git a/Moonlight/Core/Services/MoonlightService.cs b/Moonlight/Core/Services/MoonlightService.cs index 3ffa5f84..8bfb2a1d 100644 --- a/Moonlight/Core/Services/MoonlightService.cs +++ b/Moonlight/Core/Services/MoonlightService.cs @@ -7,10 +7,50 @@ namespace Moonlight.Core.Services; [Singleton] public class MoonlightService { + public readonly string BuildChannel; + public readonly string BuildCommitHash; + public readonly string BuildName; + public readonly string BuildVersion; + public readonly bool IsDockerRun; + public WebApplication Application { get; set; } // Do NOT modify using a plugin private readonly DateTime StartTimestamp = DateTime.UtcNow; + public MoonlightService() + { + //TODO: Maybe extract to a method + + if (!File.Exists("version")) + { + BuildChannel = "N/A"; + BuildCommitHash = "N/A"; + BuildName = "N/A"; + BuildVersion = "N/A"; + IsDockerRun = false; + } + + var line = File.ReadAllText("version"); + var parts = line.Split(";"); + + if (parts.Length < 5) + { + BuildChannel = "N/A"; + BuildCommitHash = "N/A"; + BuildName = "N/A"; + BuildVersion = "N/A"; + IsDockerRun = false; + } + + BuildChannel = parts[0]; + BuildCommitHash = parts[1]; + BuildName = parts[2]; + BuildVersion = parts[3]; + IsDockerRun = parts[4] == "docker"; + + //TODO: Add log call + } + public async Task Restart() { Logger.Info("Restarting moonlight"); diff --git a/Moonlight/Core/UI/Views/Admin/Sys/Index.razor b/Moonlight/Core/UI/Views/Admin/Sys/Index.razor index 626f7467..5343daf5 100644 --- a/Moonlight/Core/UI/Views/Admin/Sys/Index.razor +++ b/Moonlight/Core/UI/Views/Admin/Sys/Index.razor @@ -29,9 +29,6 @@ -
- -
@{ var uptimeText = Formatter.FormatUptime(Uptime); @@ -40,7 +37,30 @@
- + @if (MoonlightService.IsDockerRun) + { + + } + else + { + + } +
+
+ @{ + var commitText = $"{MoonlightService.BuildCommitHash} (up-to-date)"; + } + + +
+
+ +
+
+ +
+
+
@@ -74,7 +94,9 @@ { await lazyLoader.SetText("Loading system statistics"); - OsName = await HostSystemHelper.GetOsName(); + if(!MoonlightService.IsDockerRun) + OsName = await HostSystemHelper.GetOsName(); + CpuUsage = await HostSystemHelper.GetCpuUsage(); MemoryUsage = await HostSystemHelper.GetMemoryUsage(); Uptime = await MoonlightService.GetUptime(); diff --git a/Moonlight/Dockerfile b/Moonlight/Dockerfile index b2c6537a..d6539dfb 100644 --- a/Moonlight/Dockerfile +++ b/Moonlight/Dockerfile @@ -17,6 +17,13 @@ ARG BUILD_CONFIGURATION=Release RUN dotnet publish "Moonlight.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false FROM base AS final + +# Define args +ARG BUILD_CHANNEL=unknown +ARG BUILD_COMMIT_HASH=unknown +ARG BUILD_NAME=unknown +ARG BUILD_VERSION=unknown + WORKDIR /app COPY --from=publish /app/publish . @@ -24,4 +31,11 @@ COPY --from=publish /app/publish . RUN mkdir -p /app/Assets COPY ./Moonlight/Assets ./Assets +# Ensure storage folder exists and is empty +RUN mkdir -p /app/storage +RUN rm -rf /app/storage/* + +# Version the build +RUN echo "$BUILD_CHANNEL;$BUILD_COMMIT_HASH;$BUILD_NAME;$BUILD_VERSION;docker" > /app/version + ENTRYPOINT ["dotnet", "Moonlight.dll"]