Address requested changes

This commit is contained in:
Drulikar
2025-02-17 20:03:32 -06:00
parent fac6ddf8bf
commit d77cc4d1ef
4 changed files with 37 additions and 65 deletions
@@ -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<RevInfoTestMerge>();
var previousTestMerges = (IEnumerable<RevInfoTestMerge>?)previousRevisionInformation?.ActiveTestMerges ?? Enumerable.Empty<RevInfoTestMerge>();
var currentTestMerges = (IEnumerable<RevInfoTestMerge>?)revisionInformation.ActiveTestMerges ?? Enumerable.Empty<RevInfoTestMerge>();
revisionInformation.ActiveTestMerges ??= new List<RevInfoTestMerge>();
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;
}
@@ -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<RevInfoTestMerge>();
var previousTestMerges = (IEnumerable<RevInfoTestMerge>?)previousRevisionInformation?.ActiveTestMerges ?? Enumerable.Empty<RevInfoTestMerge>();
var currentTestMerges = (IEnumerable<RevInfoTestMerge>?)revisionInformation.ActiveTestMerges ?? Enumerable.Empty<RevInfoTestMerge>();
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;
})));
@@ -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.
/// </summary>
/// <param name="job">The currently running <see cref="Job"/>.</param>
/// <param name="oldCompileJob">The optional <see cref="CompileJob"/> of the previous deployment.</param>
/// <param name="revisionInformation">The <see cref="RevisionInformation"/>.</param>
/// <param name="dreamMakerSettings">The <see cref="Api.Models.Internal.DreamMakerSettings"/>.</param>
/// <param name="launchParameters">The <see cref="DreamDaemonLaunchParameters"/>.</param>
@@ -459,6 +461,7 @@ namespace Tgstation.Server.Host.Components.Deployment
/// <returns>A <see cref="ValueTask{TResult}"/> resulting in the completed <see cref="CompileJob"/>.</returns>
async ValueTask<Models.CompileJob> 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,
@@ -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<RevInfoTestMerge>();
var previousTestMerges = (IEnumerable<RevInfoTestMerge>?)previousRevisionInformation?.ActiveTestMerges ?? Enumerable.Empty<RevInfoTestMerge>();
var currentTestMerges = (IEnumerable<RevInfoTestMerge>?)revisionInformation.ActiveTestMerges ?? Enumerable.Empty<RevInfoTestMerge>();
deployedRevisionInformation.ActiveTestMerges ??= new List<RevInfoTestMerge>();
// 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();