diff --git a/src/Tgstation.Server.Host/Components/Engine/DelegatingEngineInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/DelegatingEngineInstaller.cs
index 1157dff565..91887e7314 100644
--- a/src/Tgstation.Server.Host/Components/Engine/DelegatingEngineInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/DelegatingEngineInstaller.cs
@@ -41,8 +41,8 @@ namespace Tgstation.Server.Host.Components.Engine
=> DelegateCall(version, installer => installer.DownloadVersion(version, jobProgressReporter, cancellationToken));
///
- public ValueTask Install(EngineVersion version, string path, CancellationToken cancellationToken)
- => DelegateCall(version, installer => installer.Install(version, path, cancellationToken));
+ public ValueTask Install(EngineVersion version, string path, bool deploymentPipelineProcesses, CancellationToken cancellationToken)
+ => DelegateCall(version, installer => installer.Install(version, path, deploymentPipelineProcesses, cancellationToken));
///
public ValueTask TrustDmbPath(EngineVersion version, string fullDmbPath, CancellationToken cancellationToken)
diff --git a/src/Tgstation.Server.Host/Components/Engine/EngineInstallerBase.cs b/src/Tgstation.Server.Host/Components/Engine/EngineInstallerBase.cs
index 7c25c0a13c..12cf8e657c 100644
--- a/src/Tgstation.Server.Host/Components/Engine/EngineInstallerBase.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/EngineInstallerBase.cs
@@ -46,7 +46,7 @@ namespace Tgstation.Server.Host.Components.Engine
public abstract Task CleanCache(CancellationToken cancellationToken);
///
- public abstract ValueTask Install(EngineVersion version, string path, CancellationToken cancellationToken);
+ public abstract ValueTask Install(EngineVersion version, string path, bool deploymentPipelineProcesses, CancellationToken cancellationToken);
///
public abstract ValueTask UpgradeInstallation(EngineVersion version, string path, CancellationToken cancellationToken);
diff --git a/src/Tgstation.Server.Host/Components/Engine/EngineManager.cs b/src/Tgstation.Server.Host/Components/Engine/EngineManager.cs
index 362099251e..865c61ab27 100644
--- a/src/Tgstation.Server.Host/Components/Engine/EngineManager.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/EngineManager.cs
@@ -463,6 +463,7 @@ namespace Tgstation.Server.Host.Components.Engine
installLock = installationContainer.AddReference();
}
+ var deploymentPipelineProcesses = !neededForLock;
try
{
if (installedOrInstalling)
@@ -496,26 +497,26 @@ namespace Tgstation.Server.Host.Components.Engine
progressReporter.StageName = "Running event";
var versionString = version.ToString();
- await eventConsumer.HandleEvent(EventType.EngineInstallStart, new List { versionString }, false, cancellationToken);
+ await eventConsumer.HandleEvent(EventType.EngineInstallStart, new List { versionString }, deploymentPipelineProcesses, cancellationToken);
if (installLock.UseDotnetDump)
{
if (progressReporter != null)
progressReporter.StageName = "Installing dotnet-dump";
- await dotnetDumpService.EnsureInstalled(false, cancellationToken);
+ await dotnetDumpService.EnsureInstalled(deploymentPipelineProcesses, cancellationToken);
}
- await InstallVersionFiles(progressReporter, version, customVersionStream, cancellationToken);
+ await InstallVersionFiles(progressReporter, version, customVersionStream, deploymentPipelineProcesses, cancellationToken);
ourTcs.SetResult();
- await eventConsumer.HandleEvent(EventType.EngineInstallComplete, new List { versionString }, false, cancellationToken);
+ await eventConsumer.HandleEvent(EventType.EngineInstallComplete, new List { versionString }, deploymentPipelineProcesses, cancellationToken);
}
catch (Exception ex)
{
if (ex is not OperationCanceledException)
- await eventConsumer.HandleEvent(EventType.EngineInstallFail, new List { ex.Message }, false, cancellationToken);
+ await eventConsumer.HandleEvent(EventType.EngineInstallFail, new List { ex.Message }, deploymentPipelineProcesses, cancellationToken);
lock (installedVersions)
installedVersions.Remove(version);
@@ -539,9 +540,15 @@ namespace Tgstation.Server.Host.Components.Engine
/// The optional for the operation.
/// The being installed with the number set if appropriate.
/// Custom zip file to use. Will cause a number to be added.
+ /// If processes should be launched as part of the deployment pipeline.
/// The for the operation.
/// A representing the running operation.
- async ValueTask InstallVersionFiles(JobProgressReporter? progressReporter, EngineVersion version, Stream? customVersionStream, CancellationToken cancellationToken)
+ async ValueTask InstallVersionFiles(
+ JobProgressReporter? progressReporter,
+ EngineVersion version,
+ Stream? customVersionStream,
+ bool deploymentPipelineProcesses,
+ CancellationToken cancellationToken)
{
var installFullPath = ioManager.ResolvePath(version.ToString());
async ValueTask DirectoryCleanup()
@@ -587,7 +594,7 @@ namespace Tgstation.Server.Host.Components.Engine
if (progressReporter != null)
progressReporter.StageName = "Running installation actions";
- await engineInstaller.Install(version, installFullPath, cancellationToken);
+ await engineInstaller.Install(version, installFullPath, deploymentPipelineProcesses, cancellationToken);
if (progressReporter != null)
progressReporter.StageName = "Writing version file";
diff --git a/src/Tgstation.Server.Host/Components/Engine/IEngineInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/IEngineInstaller.cs
index 7169ffe4b5..a4ad57a4c0 100644
--- a/src/Tgstation.Server.Host/Components/Engine/IEngineInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/IEngineInstaller.cs
@@ -34,9 +34,10 @@ namespace Tgstation.Server.Host.Components.Engine
///
/// The being installed.
/// The path to the installation.
+ /// If the operation should consider processes it launches to be part of the deployment pipeline.
/// The for the operation.
/// A representing the running operation.
- ValueTask Install(EngineVersion version, string path, CancellationToken cancellationToken);
+ ValueTask Install(EngineVersion version, string path, bool deploymentPipelineProcesses, CancellationToken cancellationToken);
///
/// Does actions necessary to get upgrade a version installed by a previous version of TGS.
diff --git a/src/Tgstation.Server.Host/Components/Engine/OpenDreamInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/OpenDreamInstaller.cs
index e4ee5c47d6..bdf08387bb 100644
--- a/src/Tgstation.Server.Host/Components/Engine/OpenDreamInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/OpenDreamInstaller.cs
@@ -192,7 +192,7 @@ namespace Tgstation.Server.Host.Components.Engine
}
///
- public override async ValueTask Install(EngineVersion version, string installPath, CancellationToken cancellationToken)
+ public override async ValueTask Install(EngineVersion version, string installPath, bool deploymentPipelineProcesses, CancellationToken cancellationToken)
{
CheckVersionValidity(version);
ArgumentNullException.ThrowIfNull(installPath);
@@ -247,7 +247,7 @@ namespace Tgstation.Server.Host.Components.Engine
!GeneralConfiguration.OpenDreamSuppressInstallOutput,
!GeneralConfiguration.OpenDreamSuppressInstallOutput);
- if (SessionConfiguration.LowPriorityDeploymentProcesses)
+ if (deploymentPipelineProcesses && SessionConfiguration.LowPriorityDeploymentProcesses)
buildProcess.AdjustPriority(false);
using (cancellationToken.Register(() => buildProcess.Terminate()))
diff --git a/src/Tgstation.Server.Host/Components/Engine/PosixByondInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/PosixByondInstaller.cs
index 037cacd437..ef019aa354 100644
--- a/src/Tgstation.Server.Host/Components/Engine/PosixByondInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/PosixByondInstaller.cs
@@ -71,7 +71,7 @@ namespace Tgstation.Server.Host.Components.Engine
}
///
- public override ValueTask Install(EngineVersion version, string path, CancellationToken cancellationToken)
+ public override ValueTask Install(EngineVersion version, string path, bool deploymentPipelineProcesses, CancellationToken cancellationToken)
{
CheckVersionValidity(version);
ArgumentNullException.ThrowIfNull(path);
diff --git a/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
index 4bafeb9e05..3b6790cee1 100644
--- a/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/WindowsByondInstaller.cs
@@ -127,7 +127,7 @@ namespace Tgstation.Server.Host.Components.Engine
public void Dispose() => semaphore.Dispose();
///
- public override ValueTask Install(EngineVersion version, string path, CancellationToken cancellationToken)
+ public override ValueTask Install(EngineVersion version, string path, bool deploymentPipelineProcesses, CancellationToken cancellationToken)
{
CheckVersionValidity(version);
ArgumentNullException.ThrowIfNull(path);
@@ -142,7 +142,7 @@ namespace Tgstation.Server.Host.Components.Engine
if (!generalConfiguration.SkipAddingByondFirewallException)
{
- var firewallTask = AddDreamDaemonToFirewall(version, path, cancellationToken);
+ var firewallTask = AddDreamDaemonToFirewall(version, path, deploymentPipelineProcesses, cancellationToken);
tasks.Add(firewallTask);
}
@@ -165,7 +165,7 @@ namespace Tgstation.Server.Host.Components.Engine
return;
Logger.LogInformation("BYOND Version {version} needs dd.exe added to firewall", version);
- await AddDreamDaemonToFirewall(version, path, cancellationToken);
+ await AddDreamDaemonToFirewall(version, path, true, cancellationToken);
}
///
@@ -243,9 +243,10 @@ namespace Tgstation.Server.Host.Components.Engine
///
/// The BYOND .
/// The path to the BYOND installation.
+ /// If the operation is part of the deployment pipeline.
/// The for the operation.
/// A representing the running operation.
- async ValueTask AddDreamDaemonToFirewall(EngineVersion version, string path, CancellationToken cancellationToken)
+ async ValueTask AddDreamDaemonToFirewall(EngineVersion version, string path, bool deploymentPipelineProcesses, CancellationToken cancellationToken)
{
var dreamDaemonName = GetDreamDaemonName(version.Version!, out var usesDDExe);
@@ -268,7 +269,7 @@ namespace Tgstation.Server.Host.Components.Engine
Logger,
ruleName,
dreamDaemonPath,
- sessionConfiguration.LowPriorityDeploymentProcesses,
+ deploymentPipelineProcesses && sessionConfiguration.LowPriorityDeploymentProcesses,
cancellationToken);
}
catch (Exception ex)
diff --git a/src/Tgstation.Server.Host/Components/Engine/WindowsOpenDreamInstaller.cs b/src/Tgstation.Server.Host/Components/Engine/WindowsOpenDreamInstaller.cs
index 25968446fe..1cc8da52c5 100644
--- a/src/Tgstation.Server.Host/Components/Engine/WindowsOpenDreamInstaller.cs
+++ b/src/Tgstation.Server.Host/Components/Engine/WindowsOpenDreamInstaller.cs
@@ -66,15 +66,17 @@ namespace Tgstation.Server.Host.Components.Engine
}
///
- public override ValueTask Install(EngineVersion version, string installPath, CancellationToken cancellationToken)
+ public override ValueTask Install(EngineVersion version, string installPath, bool deploymentPipelineProcesses, CancellationToken cancellationToken)
{
var installTask = base.Install(
version,
installPath,
+ deploymentPipelineProcesses,
cancellationToken);
var firewallTask = AddServerFirewallException(
version,
installPath,
+ deploymentPipelineProcesses,
cancellationToken);
return ValueTaskExtensions.WhenAll(installTask, firewallTask);
@@ -101,9 +103,10 @@ namespace Tgstation.Server.Host.Components.Engine
///
/// The BYOND .
/// The path to the BYOND installation.
+ /// If the operation is part of the deployment pipeline.
/// The for the operation.
/// A representing the running operation.
- async ValueTask AddServerFirewallException(EngineVersion version, string path, CancellationToken cancellationToken)
+ async ValueTask AddServerFirewallException(EngineVersion version, string path, bool deploymentPipelineProcesses, CancellationToken cancellationToken)
{
if (GeneralConfiguration.SkipAddingByondFirewallException)
return;
@@ -123,7 +126,7 @@ namespace Tgstation.Server.Host.Components.Engine
Logger,
ruleName,
serverExePath,
- SessionConfiguration.LowPriorityDeploymentProcesses,
+ deploymentPipelineProcesses && SessionConfiguration.LowPriorityDeploymentProcesses,
cancellationToken);
}
catch (Exception ex)
diff --git a/tests/Tgstation.Server.Host.Tests/Components/Engine/TestPosixByondInstaller.cs b/tests/Tgstation.Server.Host.Tests/Components/Engine/TestPosixByondInstaller.cs
index 22cc145683..60e86ad63e 100644
--- a/tests/Tgstation.Server.Host.Tests/Components/Engine/TestPosixByondInstaller.cs
+++ b/tests/Tgstation.Server.Host.Tests/Components/Engine/TestPosixByondInstaller.cs
@@ -90,7 +90,7 @@ namespace Tgstation.Server.Host.Components.Engine.Tests
var installer = new PosixByondInstaller(mockPostWriteHandler.Object, mockIOManager.Object, mockFileDownloader, mockLogger.Object);
const string FakePath = "fake";
- await Assert.ThrowsExceptionAsync(() => installer.Install(null, null, default).AsTask());
+ await Assert.ThrowsExceptionAsync(() => installer.Install(null, null, false, default).AsTask());
var byondVersion = new EngineVersion
{
@@ -98,10 +98,10 @@ namespace Tgstation.Server.Host.Components.Engine.Tests
Version = new Version(123, 252345),
};
- await Assert.ThrowsExceptionAsync(() => installer.Install(byondVersion, null, default).AsTask());
+ await Assert.ThrowsExceptionAsync(() => installer.Install(byondVersion, null, false, default).AsTask());
byondVersion.Version = new Version(511, 1385);
- await installer.Install(byondVersion, FakePath, default);
+ await installer.Install(byondVersion, FakePath, false, default);
mockPostWriteHandler.Verify(x => x.HandleWrite(It.IsAny()), Times.Exactly(4));
}
diff --git a/tests/Tgstation.Server.Tests/TestVersions.cs b/tests/Tgstation.Server.Tests/TestVersions.cs
index 591517a46f..0b4cc591bb 100644
--- a/tests/Tgstation.Server.Tests/TestVersions.cs
+++ b/tests/Tgstation.Server.Tests/TestVersions.cs
@@ -477,7 +477,7 @@ namespace Tgstation.Server.Tests
if (byondInstaller is WindowsByondInstaller)
typeof(WindowsByondInstaller).GetField("installedDirectX", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(byondInstaller, true);
- await byondInstaller.Install(engineVersion, tempPath, default);
+ await byondInstaller.Install(engineVersion, tempPath, false, default);
var binPath = (string)typeof(ByondInstallerBase).GetField("ByondBinPath", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
var ddNameFunc = installerType.GetMethod("GetDreamDaemonName", BindingFlags.Instance | BindingFlags.NonPublic);