diff --git a/.github/workflows/ci-pipeline.yml b/.github/workflows/ci-pipeline.yml index 1011e97ac7..fe0b463dce 100644 --- a/.github/workflows/ci-pipeline.yml +++ b/.github/workflows/ci-pipeline.yml @@ -519,8 +519,8 @@ jobs: - name: Run Unit Tests run: sudo dotnet test --no-build --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" --filter TestCategory!=RequiresDatabase -c ${{ matrix.configuration }}NoWindows --collect:"XPlat Code Coverage" --settings build/ci.runsettings --results-directory ./TestResults tgstation-server.sln env: - TGS_TEST_DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} - TGS_TEST_IRC_CONNECTION_STRING: ${{ secrets.IRC_CONNECTION_STRING }} + TGS_TEST_DISCORD_TOKEN: ${{ matrix.configuration == 'Release' && secrets.DISCORD_TOKEN || '' }} + TGS_TEST_IRC_CONNECTION_STRING: ${{ matrix.configuration == 'Release' && secrets.IRC_CONNECTION_STRING || '' }} TGS_TEST_APP_ID: ${{ secrets.APP_ID }} TGS_TEST_APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} TGS_TEST_REPO_SLUG: ${{ github.repository }} @@ -540,7 +540,7 @@ jobs: configuration: ["Debug", "Release"] env: TGS_TELEMETRY_KEY_FILE: C:/tgs_telemetry_key.txt - runs-on: windows-latest + runs-on: windows-2025 steps: - name: Setup dotnet uses: actions/setup-dotnet@v4 @@ -588,8 +588,6 @@ jobs: - name: Run Unit Tests run: dotnet test --no-build --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" --filter TestCategory!=RequiresDatabase -c ${{ matrix.configuration }}NoWix --collect:"XPlat Code Coverage" --settings build/ci.runsettings --results-directory ./TestResults tgstation-server.sln env: - TGS_TEST_DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} - TGS_TEST_IRC_CONNECTION_STRING: ${{ secrets.IRC_CONNECTION_STRING }} TGS_TEST_APP_ID: ${{ secrets.APP_ID }} TGS_TEST_APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} TGS_TEST_REPO_SLUG: ${{ github.repository }} @@ -612,7 +610,7 @@ jobs: configuration: ["Debug", "Release"] env: TGS_TELEMETRY_KEY_FILE: C:/tgs_telemetry_key.txt - runs-on: windows-latest + runs-on: windows-2025 steps: - name: Setup dotnet uses: actions/setup-dotnet@v4 @@ -1451,16 +1449,11 @@ jobs: build-msi: name: Build Windows Installer .exe - runs-on: windows-latest + runs-on: windows-2025 needs: start-gate env: TGS_TELEMETRY_KEY_FILE: C:/tgs_telemetry_key.txt steps: - - name: Install winget - uses: Cyberboss/install-winget@v1 - with: - GITHUB_TOKEN: ${{ secrets.DEV_PUSH_TOKEN }} - - name: Setup dotnet uses: actions/setup-dotnet@v4 with: @@ -1684,7 +1677,7 @@ jobs: deploy-rest: name: Deploy REST API needs: deployment-gate - runs-on: windows-latest + runs-on: windows-2025 permissions: id-token: write attestations: write @@ -1765,7 +1758,7 @@ jobs: deploy-gql: name: Deploy GraphQL API needs: deployment-gate - runs-on: windows-latest + runs-on: windows-2025 permissions: id-token: write attestations: write @@ -1853,7 +1846,7 @@ jobs: deploy-dm: name: Deploy DreamMaker API needs: deployment-gate - runs-on: windows-latest + runs-on: windows-2025 permissions: id-token: write attestations: write @@ -2023,7 +2016,7 @@ jobs: deploy-tgs: name: Deploy TGS needs: [deploy-dm, deploy-rest, deploy-gql, deployment-gate] - runs-on: windows-latest + runs-on: windows-2025 if: (!(cancelled() || failure())) && github.event.ref == 'refs/heads/master' && contains(github.event.head_commit.message, '[TGSDeploy]') && needs.deployment-gate.result == 'success' env: TGS_TELEMETRY_KEY_FILE: C:/tgs_telemetry_key.txt @@ -2440,7 +2433,7 @@ jobs: name: Deploy TGS (winget) needs: deploy-tgs if: (!(cancelled() || failure())) && needs.deploy-tgs.result == 'success' - runs-on: windows-latest + runs-on: windows-2025 steps: - name: Setup dotnet uses: actions/setup-dotnet@v4 @@ -2448,11 +2441,6 @@ jobs: dotnet-version: ${{ env.TGS_DOTNET_VERSION }}.0.x dotnet-quality: ${{ env.TGS_DOTNET_QUALITY }} - - name: Install winget - uses: Cyberboss/install-winget@v1 - with: - GITHUB_TOKEN: ${{ secrets.DEV_PUSH_TOKEN }} - - name: Install wingetcreate run: winget install wingetcreate --version 1.2.8.0 --disable-interactivity --accept-source-agreements # Pinned due to breaking every other version diff --git a/build/Version.props b/build/Version.props index 500ff8f913..394ff58026 100644 --- a/build/Version.props +++ b/build/Version.props @@ -3,15 +3,15 @@ - 6.16.0 + 6.17.0 5.7.0 10.13.0 0.6.0 7.0.0 18.0.0 21.0.0 - 7.3.1 - 5.10.0 + 7.3.3 + 5.10.1 1.6.0 9.0.0 1.2.1 diff --git a/build/package/nix/ServerConsole.sha256 b/build/package/nix/ServerConsole.sha256 index 3597f8c79b..cace1b0c7f 100644 --- a/build/package/nix/ServerConsole.sha256 +++ b/build/package/nix/ServerConsole.sha256 @@ -1 +1 @@ -sha256-1gQOL2JThWYsTPcCzKRXBPOVVZRJgmxvKa+Lo82CWC4= +sha256-Zo6srVhcY2cgitTOJykaoNH4Wxw1m2WQ7CAb3n6QgsI= diff --git a/build/package/nix/tgstation-server.nix b/build/package/nix/tgstation-server.nix index 3b44da3309..326d6182a1 100644 --- a/build/package/nix/tgstation-server.nix +++ b/build/package/nix/tgstation-server.nix @@ -23,12 +23,13 @@ let byond-patcher = pkgs-i686.writeShellScriptBin "EngineInstallComplete-050-TgsPatchELFByond.sh" '' # If the file doesn't exist, assume OD - if [[ ! -f ../../Byond/$1/byond/bin/DreamDaemon ]] ; then + BYOND_BIN_PATH="''${TGS_INSTANCE_ROOT}/Byond/$1/byond/bin/" + if [[ ! -f "''${BYOND_BIN_PATH}DreamDaemon" ]] ; then echo "DreamDaemon doesn't appear to exist. Assuming OD install" exit fi - BYOND_PATH=$(realpath ../../Byond/$1/byond/bin/) + BYOND_PATH=$(realpath $BYOND_BIN_PATH) ${pkgs.patchelf}/bin/patchelf --set-interpreter "$(cat ${stdenv.cc}/nix-support/dynamic-linker)" \ --set-rpath "$BYOND_PATH:${rpath}" \ diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm index 7e1ba820dd..b9b539c32e 100644 --- a/src/DMAPI/tgs.dm +++ b/src/DMAPI/tgs.dm @@ -1,7 +1,7 @@ // tgstation-server DMAPI // The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119. -#define TGS_DMAPI_VERSION "7.3.1" +#define TGS_DMAPI_VERSION "7.3.3" // All functions and datums outside this document are subject to change with any version and should not be relied on. diff --git a/src/DMAPI/tgs/v5/__interop_version.dm b/src/DMAPI/tgs/v5/__interop_version.dm index 29ea239ad8..9589cbf31b 100644 --- a/src/DMAPI/tgs/v5/__interop_version.dm +++ b/src/DMAPI/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.10.0" +"5.10.1" diff --git a/src/DMAPI/tgs/v5/api.dm b/src/DMAPI/tgs/v5/api.dm index 3e328fc7c2..4ca9036b79 100644 --- a/src/DMAPI/tgs/v5/api.dm +++ b/src/DMAPI/tgs/v5/api.dm @@ -97,7 +97,7 @@ if(revInfo) tm.commit = revisionData[DMAPI5_REVISION_INFORMATION_COMMIT_SHA] tm.origin_commit = revisionData[DMAPI5_REVISION_INFORMATION_ORIGIN_COMMIT_SHA] - tm.timestamp = entry[DMAPI5_REVISION_INFORMATION_TIMESTAMP] + tm.timestamp = revisionData[DMAPI5_REVISION_INFORMATION_TIMESTAMP] else TGS_WARNING_LOG("Failed to decode [DMAPI5_TEST_MERGE_REVISION] from test merge #[tm.number]!") diff --git a/src/Tgstation.Server.Api/Tgstation.Server.Api.csproj b/src/Tgstation.Server.Api/Tgstation.Server.Api.csproj index d5a111921d..0e83f44424 100644 --- a/src/Tgstation.Server.Api/Tgstation.Server.Api.csproj +++ b/src/Tgstation.Server.Api/Tgstation.Server.Api.csproj @@ -28,7 +28,7 @@ - + diff --git a/src/Tgstation.Server.Host/Components/InstanceFactory.cs b/src/Tgstation.Server.Host/Components/InstanceFactory.cs index b5c93bac69..c7d08ad4b1 100644 --- a/src/Tgstation.Server.Host/Components/InstanceFactory.cs +++ b/src/Tgstation.Server.Host/Components/InstanceFactory.cs @@ -292,6 +292,7 @@ namespace Tgstation.Server.Host.Components platformIdentifier, fileTransferService, loggerFactory.CreateLogger(), + metadata, generalConfiguration, sessionConfiguration); var eventConsumer = new EventConsumer(configuration); diff --git a/src/Tgstation.Server.Host/Components/Interop/Bridge/TestMergeInformation.cs b/src/Tgstation.Server.Host/Components/Interop/Bridge/TestMergeInformation.cs index 4537c56bd9..cab099524c 100644 --- a/src/Tgstation.Server.Host/Components/Interop/Bridge/TestMergeInformation.cs +++ b/src/Tgstation.Server.Host/Components/Interop/Bridge/TestMergeInformation.cs @@ -1,5 +1,4 @@ using System; -using System.Globalization; using Tgstation.Server.Api.Models.Internal; @@ -40,7 +39,7 @@ namespace Tgstation.Server.Host.Components.Interop.Bridge public TestMergeInformation(Models.TestMerge testMerge, RevisionInformation revision) : base(testMerge) { - TimeMerged = testMerge?.MergedAt.Ticks.ToString(CultureInfo.InvariantCulture) ?? throw new ArgumentNullException(nameof(testMerge)); + TimeMerged = testMerge?.MergedAt.ToString("O") ?? throw new ArgumentNullException(nameof(testMerge)); Revision = revision ?? throw new ArgumentNullException(nameof(revision)); } } diff --git a/src/Tgstation.Server.Host/Components/StaticFiles/Configuration.cs b/src/Tgstation.Server.Host/Components/StaticFiles/Configuration.cs index e1b37b50b3..f5d320ec2d 100644 --- a/src/Tgstation.Server.Host/Components/StaticFiles/Configuration.cs +++ b/src/Tgstation.Server.Host/Components/StaticFiles/Configuration.cs @@ -124,6 +124,11 @@ namespace Tgstation.Server.Host.Components.StaticFiles /// readonly ILogger logger; + /// + /// The the belongs to. + /// + readonly Models.Instance metadata; + /// /// The for . /// @@ -159,6 +164,7 @@ namespace Tgstation.Server.Host.Components.StaticFiles /// The value of . /// The value of . /// The value of . + /// The value of . /// The value of . /// The value of . /// The value of . @@ -171,6 +177,7 @@ namespace Tgstation.Server.Host.Components.StaticFiles IPlatformIdentifier platformIdentifier, IFileTransferTicketProvider fileTransferService, ILogger logger, + Models.Instance metadata, GeneralConfiguration generalConfiguration, SessionConfiguration sessionConfiguration) { @@ -182,6 +189,7 @@ namespace Tgstation.Server.Host.Components.StaticFiles this.platformIdentifier = platformIdentifier ?? throw new ArgumentNullException(nameof(platformIdentifier)); this.fileTransferService = fileTransferService ?? throw new ArgumentNullException(nameof(fileTransferService)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); + this.metadata = metadata ?? throw new ArgumentNullException(nameof(metadata)); this.generalConfiguration = generalConfiguration ?? throw new ArgumentNullException(nameof(generalConfiguration)); this.sessionConfiguration = sessionConfiguration ?? throw new ArgumentNullException(nameof(sessionConfiguration)); @@ -844,6 +852,10 @@ namespace Tgstation.Server.Host.Components.StaticFiles return $"\"{arg}\""; })), cancellationToken, + new Dictionary + { + { "TGS_INSTANCE_ROOT", metadata.Path! }, + }, readStandardHandles: true, noShellExecute: true)) using (cancellationToken.Register(() => script.Terminate())) diff --git a/src/Tgstation.Server.Host/Jobs/JobService.cs b/src/Tgstation.Server.Host/Jobs/JobService.cs index 519d00c2d3..c36b5ca825 100644 --- a/src/Tgstation.Server.Host/Jobs/JobService.cs +++ b/src/Tgstation.Server.Host/Jobs/JobService.cs @@ -356,7 +356,6 @@ namespace Tgstation.Server.Host.Jobs { ArgumentNullException.ThrowIfNull(instanceCoreProvider); - logger.LogTrace("Activating job manager..."); activationTcs.SetResult(instanceCoreProvider); } diff --git a/src/Tgstation.Server.Host/Tgstation.Server.Host.csproj b/src/Tgstation.Server.Host/Tgstation.Server.Host.csproj index 4422e33221..9e4a3056c4 100644 --- a/src/Tgstation.Server.Host/Tgstation.Server.Host.csproj +++ b/src/Tgstation.Server.Host/Tgstation.Server.Host.csproj @@ -130,7 +130,7 @@ - + diff --git a/tests/DMAPI/BasicOperation/test_event-qwer.sh b/tests/DMAPI/BasicOperation/test_event-qwer.sh index 185bc88fed..26865cb924 100755 --- a/tests/DMAPI/BasicOperation/test_event-qwer.sh +++ b/tests/DMAPI/BasicOperation/test_event-qwer.sh @@ -4,6 +4,13 @@ set -e echo "Running test_event script - $1 - $2" +if [[ -z "${TGS_INSTANCE_ROOT}" ]]; then + echo "TEST ERROR: TGS_INSTANCE_ROOT env var not defined" + exit 1 +fi + +echo "TGS_INSTANCE_ROOT: ${TGS_INSTANCE_ROOT}" + sleep 5 cd $1 diff --git a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs index 834be3bcad..b39f84f4c0 100644 --- a/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs +++ b/tests/Tgstation.Server.Host.Tests/Components/Chat/Providers/TestIrcProvider.cs @@ -61,7 +61,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers.Tests public async Task TestConnectAndDisconnect() { var actualToken = Environment.GetEnvironmentVariable("TGS_TEST_IRC_CONNECTION_STRING"); - if (actualToken == null) + if (String.IsNullOrWhiteSpace(actualToken)) Assert.Inconclusive("Required environment variable TGS_TEST_IRC_CONNECTION_STRING isn't set!"); if (!new IrcConnectionStringBuilder(actualToken).Valid) diff --git a/tests/Tgstation.Server.Host.Tests/Components/StaticFiles/TestConfiguration.cs b/tests/Tgstation.Server.Host.Tests/Components/StaticFiles/TestConfiguration.cs index 6df0a9e573..f5e6b9bf5f 100644 --- a/tests/Tgstation.Server.Host.Tests/Components/StaticFiles/TestConfiguration.cs +++ b/tests/Tgstation.Server.Host.Tests/Components/StaticFiles/TestConfiguration.cs @@ -53,6 +53,10 @@ namespace Tgstation.Server.Host.Components.StaticFiles.Tests Mock.Of(), Mock.Of(), loggerFactory.CreateLogger(), + new Models.Instance + { + Path = "Some path", + }, new GeneralConfiguration(), new SessionConfiguration());