diff --git a/src/Tgstation.Server.Host/Configuration/UpdatesConfiguration.cs b/src/Tgstation.Server.Host/Configuration/UpdatesConfiguration.cs
index fae04d8684..406560f458 100644
--- a/src/Tgstation.Server.Host/Configuration/UpdatesConfiguration.cs
+++ b/src/Tgstation.Server.Host/Configuration/UpdatesConfiguration.cs
@@ -39,11 +39,5 @@
/// Asset package containing the new assembly in zip form.
///
public string UpdatePackageAssetName { get; set; } = DefaultUpdatePackageAssetName;
-
- ///
- /// Dump all retrieved releases from the GitHub API when a requested release is not found.
- ///
- /// This is an internal config and may be adjusted or removed without a version change.
- public bool DumpReleasesOnNotFound { get; set; }
}
}
diff --git a/src/Tgstation.Server.Host/Core/ServerUpdater.cs b/src/Tgstation.Server.Host/Core/ServerUpdater.cs
index 86623be571..d03b6ac2f1 100644
--- a/src/Tgstation.Server.Host/Core/ServerUpdater.cs
+++ b/src/Tgstation.Server.Host/Core/ServerUpdater.cs
@@ -8,7 +8,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Tgstation.Server.Host.Configuration;
-using Tgstation.Server.Host.Extensions;
using Tgstation.Server.Host.IO;
using Tgstation.Server.Host.Swarm;
using Tgstation.Server.Host.Utils;
@@ -19,9 +18,9 @@ namespace Tgstation.Server.Host.Core
sealed class ServerUpdater : IServerUpdater, IServerUpdateExecutor
{
///
- /// The for the .
+ /// The for the .
///
- readonly IGitHubClientFactory gitHubClientFactory;
+ readonly IGitHubService gitHubService;
///
/// The for the .
@@ -61,7 +60,7 @@ namespace Tgstation.Server.Host.Core
///
/// Initializes a new instance of the class.
///
- /// The value of .
+ /// The value of .
/// The value of .
/// The value of .
/// The value of .
@@ -69,7 +68,7 @@ namespace Tgstation.Server.Host.Core
/// The containing the value of .
/// The containing the value of .
public ServerUpdater(
- IGitHubClientFactory gitHubClientFactory,
+ IGitHubService gitHubService,
IIOManager ioManager,
IFileDownloader fileDownloader,
IServerControl serverControl,
@@ -77,7 +76,7 @@ namespace Tgstation.Server.Host.Core
IOptions generalConfigurationOptions,
IOptions updatesConfigurationOptions)
{
- this.gitHubClientFactory = gitHubClientFactory ?? throw new ArgumentNullException(nameof(gitHubClientFactory));
+ this.gitHubService = gitHubService ?? throw new ArgumentNullException(nameof(gitHubService));
this.ioManager = ioManager ?? throw new ArgumentNullException(nameof(ioManager));
this.fileDownloader = fileDownloader ?? throw new ArgumentNullException(nameof(fileDownloader));
this.serverControl = serverControl ?? throw new ArgumentNullException(nameof(serverControl));
@@ -224,64 +223,38 @@ namespace Tgstation.Server.Host.Core
async Task BeginUpdateImpl(ISwarmService swarmService, Version newVersion, bool recursed, CancellationToken cancellationToken)
{
logger.LogDebug("Looking for GitHub releases version {version}...", newVersion);
- var gitHubClient = gitHubClientFactory.CreateClient();
- var releases = await gitHubClient
- .Repository
- .Release
- .GetAll(updatesConfiguration.GitHubRepositoryId)
- .WithToken(cancellationToken);
- logger.LogTrace("Received {releaseCount} total releases from GitHub", releases.Count);
-
- var filteredReleases = releases
- .Where(x => x.TagName.StartsWith(updatesConfiguration.GitTagPrefix, StringComparison.InvariantCulture))
- .ToList();
-
- logger.LogTrace(
- "Filtered to {releaseCount} releases matching the configured tag prefix of \"{tagPrefix}\"",
- filteredReleases.Count,
- updatesConfiguration.GitTagPrefix);
-
- foreach (var release in filteredReleases)
- if (Version.TryParse(
- release.TagName.Replace(
- updatesConfiguration.GitTagPrefix, String.Empty, StringComparison.Ordinal),
- out var version))
+ var releases = await gitHubService.GetTgsReleases(cancellationToken);
+ foreach (var kvp in releases)
+ {
+ var version = kvp.Key;
+ var release = kvp.Value;
+ if (version == newVersion)
{
- if (version == newVersion)
+ var asset = release.Assets.Where(x => x.Name.Equals(updatesConfiguration.UpdatePackageAssetName, StringComparison.Ordinal)).FirstOrDefault();
+ if (asset == default)
+ continue;
+
+ serverUpdateOperation = new ServerUpdateOperation
{
- var asset = release.Assets.Where(x => x.Name.Equals(updatesConfiguration.UpdatePackageAssetName, StringComparison.Ordinal)).FirstOrDefault();
- if (asset == default)
- continue;
+ TargetVersion = version,
+ UpdateZipUrl = new Uri(asset.BrowserDownloadUrl),
+ SwarmService = swarmService,
+ };
- serverUpdateOperation = new ServerUpdateOperation
- {
- TargetVersion = version,
- UpdateZipUrl = new Uri(asset.BrowserDownloadUrl),
- SwarmService = swarmService,
- };
-
- try
- {
- if (!serverControl.TryStartUpdate(this, version))
- return ServerUpdateResult.UpdateInProgress;
- }
- finally
- {
- serverUpdateOperation = null;
- }
-
- return ServerUpdateResult.Started;
+ try
+ {
+ if (!serverControl.TryStartUpdate(this, version))
+ return ServerUpdateResult.UpdateInProgress;
+ }
+ finally
+ {
+ serverUpdateOperation = null;
}
- }
- else
- logger.LogDebug("Unparsable release tag: {releaseTag}", release.TagName);
- if (updatesConfiguration.DumpReleasesOnNotFound)
- logger.LogInformation(
- "Found releases:{newline}\t{releases}",
- Environment.NewLine,
- String.Join($"{Environment.NewLine}\t", releases.Select(x => x.TagName).OrderBy(x => x)));
+ return ServerUpdateResult.Started;
+ }
+ }
if (!recursed)
{
diff --git a/tests/Tgstation.Server.Tests/Live/LiveTestingServer.cs b/tests/Tgstation.Server.Tests/Live/LiveTestingServer.cs
index 6a66269efb..4aa9e70604 100644
--- a/tests/Tgstation.Server.Tests/Live/LiveTestingServer.cs
+++ b/tests/Tgstation.Server.Tests/Live/LiveTestingServer.cs
@@ -49,7 +49,7 @@ namespace Tgstation.Server.Tests.Live
SerilogContextHelper.AddSwarmNodeIdentifierToTemplate();
}
- public LiveTestingServer(SwarmConfiguration swarmConfiguration, bool enableOAuth, ushort port = 5010, bool dumpOnMissingUpdate = true)
+ public LiveTestingServer(SwarmConfiguration swarmConfiguration, bool enableOAuth, ushort port = 5010)
{
Directory = Environment.GetEnvironmentVariable("TGS_TEST_TEMP_DIRECTORY");
if (string.IsNullOrWhiteSpace(Directory))
@@ -116,9 +116,6 @@ namespace Tgstation.Server.Tests.Live
$"Session:LowPriorityDeploymentProcesses={LowPriorityDeployments}",
};
- if (dumpOnMissingUpdate)
- args.Add("Updates:DumpReleasesOnNotFound=true");
-
swarmArgs = new List();
if (swarmConfiguration != null)
{
diff --git a/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs b/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs
index 5b10b5b6d6..d75a40c8ef 100644
--- a/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs
+++ b/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs
@@ -218,7 +218,7 @@ namespace Tgstation.Server.Tests.Live
[TestMethod]
public async Task TestUpdateBadVersion()
{
- using var server = new LiveTestingServer(null, false, dumpOnMissingUpdate: false);
+ using var server = new LiveTestingServer(null, false);
using var serverCts = new CancellationTokenSource();
var cancellationToken = serverCts.Token;
var serverTask = server.Run(cancellationToken);