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());