From d77cc4d1ef120f75dc75c28e428ff7b0f6140648 Mon Sep 17 00:00:00 2001 From: Drulikar Date: Mon, 17 Feb 2025 19:39:13 -0600 Subject: [PATCH] Address requested changes --- .../Chat/Providers/DiscordProvider.cs | 33 +++++++------------ .../Components/Chat/Providers/IrcProvider.cs | 33 +++++++------------ .../Components/Deployment/DreamMaker.cs | 6 ++-- .../Remote/BaseRemoteDeploymentManager.cs | 30 +++++++---------- 4 files changed, 37 insertions(+), 65 deletions(-) diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs index fab0ae4f51..f76ee34517 100644 --- a/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs +++ b/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs @@ -939,37 +939,28 @@ namespace Tgstation.Server.Host.Components.Chat.Providers if (gitHubOwner == null || gitHubRepo == null) return fields; - previousRevisionInformation ??= new Models.RevisionInformation(); - previousRevisionInformation.ActiveTestMerges ??= new List(); + var previousTestMerges = (IEnumerable?)previousRevisionInformation?.ActiveTestMerges ?? Enumerable.Empty(); + var currentTestMerges = (IEnumerable?)revisionInformation.ActiveTestMerges ?? Enumerable.Empty(); - revisionInformation.ActiveTestMerges ??= new List(); - - var addedTestMerges = revisionInformation - .ActiveTestMerges + // determine what TMs were changed and how + var addedTestMerges = currentTestMerges .Select(x => x.TestMerge) - .Where(x => !previousRevisionInformation - .ActiveTestMerges + .Where(x => !previousTestMerges .Any(y => y.TestMerge.Number == x.Number)) .ToList(); - var removedTestMerges = previousRevisionInformation - .ActiveTestMerges + var removedTestMerges = previousTestMerges .Select(x => x.TestMerge) - .Where(x => !revisionInformation - .ActiveTestMerges + .Where(x => !currentTestMerges .Any(y => y.TestMerge.Number == x.Number)) .ToList(); - var updatedTestMerges = revisionInformation - .ActiveTestMerges + var updatedTestMerges = currentTestMerges .Select(x => x.TestMerge) - .Where(x => previousRevisionInformation - .ActiveTestMerges + .Where(x => previousTestMerges .Any(y => y.TestMerge.Number == x.Number && y.TestMerge.TargetCommitSha != x.TargetCommitSha)) .ToList(); - var unchangedTestMerges = revisionInformation - .ActiveTestMerges + var unchangedTestMerges = currentTestMerges .Select(x => x.TestMerge) - .Where(x => previousRevisionInformation - .ActiveTestMerges + .Where(x => previousTestMerges .Any(y => y.TestMerge.Number == x.Number && y.TestMerge.TargetCommitSha == x.TargetCommitSha)) .ToList(); @@ -1008,7 +999,6 @@ namespace Tgstation.Server.Host.Components.Chat.Providers false))); if (removedTestMerges.Count != 0) - { fields.Add( new EmbedField( "Removed:", @@ -1016,7 +1006,6 @@ namespace Tgstation.Server.Host.Components.Chat.Providers Environment.NewLine, removedTestMerges .Select(x => $"- #{x.Number} [{x.TitleAtMerge}]({x.Url}) by _[@{x.Author}](https://github.com/{x.Author})_")))); - } return fields; } diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs index c0a1e7339a..ec6d9e4d37 100644 --- a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs +++ b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs @@ -232,8 +232,8 @@ namespace Tgstation.Server.Host.Components.Chat.Providers ArgumentNullException.ThrowIfNull(gitHubOwner); ArgumentNullException.ThrowIfNull(gitHubRepo); - previousRevisionInformation ??= new Models.RevisionInformation(); - previousRevisionInformation.ActiveTestMerges ??= new List(); + var previousTestMerges = (IEnumerable?)previousRevisionInformation?.ActiveTestMerges ?? Enumerable.Empty(); + var currentTestMerges = (IEnumerable?)revisionInformation.ActiveTestMerges ?? Enumerable.Empty(); var commitInsert = revisionInformation.CommitSha![..7]; string remoteCommitInsert; @@ -245,45 +245,34 @@ namespace Tgstation.Server.Host.Components.Chat.Providers else remoteCommitInsert = String.Format(CultureInfo.InvariantCulture, ". Remote commit: ^{0}", revisionInformation.OriginCommitSha![..7]); - var testmergeInsert = (revisionInformation.ActiveTestMerges?.Count ?? 0) == 0 + var testmergeInsert = !currentTestMerges.Any() ? String.Empty : String.Format( CultureInfo.InvariantCulture, " (Test Merges: {0})", String.Join( ", ", - revisionInformation - .ActiveTestMerges! + currentTestMerges .Select(x => x.TestMerge) .Select(x => { var status = string.Empty; - if (!previousRevisionInformation.ActiveTestMerges.Any(y => y.TestMerge.Number == x.Number)) - { + if (!previousTestMerges.Any(y => y.TestMerge.Number == x.Number)) status = "Added"; - } - else if (revisionInformation.ActiveTestMerges!.Any(y => y.TestMerge.Number == x.Number && y.TestMerge.TargetCommitSha != x.TargetCommitSha)) - { + else if (previousTestMerges.Any(y => y.TestMerge.Number == x.Number && y.TestMerge.TargetCommitSha != x.TargetCommitSha)) status = "Updated"; - } - var result = String.Format(CultureInfo.InvariantCulture, "#{0} at {1}", x.Number, x.TargetCommitSha![..7]); + var result = $"#{x.Number} at {x.TargetCommitSha![..7]}"; - if (x.Comment != null) + if (!string.IsNullOrEmpty(x.Comment)) { if (!string.IsNullOrEmpty(status)) - { - result += String.Format(CultureInfo.InvariantCulture, " ({1} - {0})", x.Comment, status); - } + result += $" ({status} - {x.Comment})"; else - { - result += String.Format(CultureInfo.InvariantCulture, " ({0})", x.Comment); - } + result += $" ({x.Comment})"; } else if (!string.IsNullOrEmpty(status)) - { - result += String.Format(CultureInfo.InvariantCulture, " ({0})", status); - } + result += $" ({status})"; return result; }))); diff --git a/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs b/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs index 75d31bc5d7..85c4c05986 100644 --- a/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs +++ b/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs @@ -313,9 +313,11 @@ namespace Tgstation.Server.Host.Components.Deployment repositorySettings!.PushTestMergeCommits!.Value && repositorySettings.AccessToken != null && repositorySettings.AccessUser != null; + var oldCompileJob = await compileJobConsumer.LatestCompileJob(); using (repo) compileJob = await Compile( job, + oldCompileJob, revInfo!, dreamMakerSettings!, ddSettings!, @@ -326,7 +328,6 @@ namespace Tgstation.Server.Host.Components.Deployment likelyPushedTestMergeCommit, cancellationToken); - var oldCompileJob = await compileJobConsumer.LatestCompileJob(); try { await databaseContextFactory.UseContext( @@ -447,6 +448,7 @@ namespace Tgstation.Server.Host.Components.Deployment /// Run the compile implementation. /// /// The currently running . + /// The optional of the previous deployment. /// The . /// The . /// The . @@ -459,6 +461,7 @@ namespace Tgstation.Server.Host.Components.Deployment /// A resulting in the completed . async ValueTask Compile( Models.Job job, + Models.CompileJob? oldCompileJob, Models.RevisionInformation revisionInformation, Api.Models.Internal.DreamMakerSettings dreamMakerSettings, DreamDaemonLaunchParameters launchParameters, @@ -478,7 +481,6 @@ namespace Tgstation.Server.Host.Components.Deployment try { using var engineLock = await engineManager.UseExecutables(null, null, cancellationToken); - var oldCompileJob = await compileJobConsumer.LatestCompileJob(); currentChatCallback = chatManager.QueueDeploymentMessage( revisionInformation, oldCompileJob?.RevisionInformation, diff --git a/src/Tgstation.Server.Host/Components/Deployment/Remote/BaseRemoteDeploymentManager.cs b/src/Tgstation.Server.Host/Components/Deployment/Remote/BaseRemoteDeploymentManager.cs index 0f8c86732f..0bcf10579b 100644 --- a/src/Tgstation.Server.Host/Components/Deployment/Remote/BaseRemoteDeploymentManager.cs +++ b/src/Tgstation.Server.Host/Components/Deployment/Remote/BaseRemoteDeploymentManager.cs @@ -66,36 +66,28 @@ namespace Tgstation.Server.Host.Components.Deployment.Remote if (repositorySettings.AccessToken == null) return; - var deployedRevisionInformation = compileJob.RevisionInformation; - if ((previousRevisionInformation != null && previousRevisionInformation.CommitSha == deployedRevisionInformation.CommitSha) + var revisionInformation = compileJob.RevisionInformation; + if ((previousRevisionInformation != null && previousRevisionInformation.CommitSha == revisionInformation.CommitSha) || !repositorySettings.PostTestMergeComment!.Value) return; - previousRevisionInformation ??= new RevisionInformation(); - previousRevisionInformation.ActiveTestMerges ??= new List(); + var previousTestMerges = (IEnumerable?)previousRevisionInformation?.ActiveTestMerges ?? Enumerable.Empty(); + var currentTestMerges = (IEnumerable?)revisionInformation.ActiveTestMerges ?? Enumerable.Empty(); - deployedRevisionInformation.ActiveTestMerges ??= new List(); - - // added prs - var addedTestMerges = deployedRevisionInformation - .ActiveTestMerges + // determine what TMs were changed and how + var addedTestMerges = currentTestMerges .Select(x => x.TestMerge) - .Where(x => !previousRevisionInformation - .ActiveTestMerges + .Where(x => !previousTestMerges .Any(y => y.TestMerge.Number == x.Number)) .ToList(); - var removedTestMerges = previousRevisionInformation - .ActiveTestMerges + var removedTestMerges = previousTestMerges .Select(x => x.TestMerge) - .Where(x => !deployedRevisionInformation - .ActiveTestMerges + .Where(x => !currentTestMerges .Any(y => y.TestMerge.Number == x.Number)) .ToList(); - var updatedTestMerges = deployedRevisionInformation - .ActiveTestMerges + var updatedTestMerges = currentTestMerges .Select(x => x.TestMerge) - .Where(x => previousRevisionInformation - .ActiveTestMerges + .Where(x => previousTestMerges .Any(y => y.TestMerge.Number == x.Number)) .ToList();