From f0d8dd5c59761ba2fddb08ac72545bd1e04d6baa Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Thu, 7 Nov 2024 17:41:45 -0500 Subject: [PATCH] Fix issues with issue relocation during releases --- .../Tgstation.Server.ReleaseNotes/Program.cs | 68 +++++++++++-------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/tools/Tgstation.Server.ReleaseNotes/Program.cs b/tools/Tgstation.Server.ReleaseNotes/Program.cs index 3cceaf2237..66e6869508 100644 --- a/tools/Tgstation.Server.ReleaseNotes/Program.cs +++ b/tools/Tgstation.Server.ReleaseNotes/Program.cs @@ -315,6 +315,39 @@ namespace Tgstation.Server.ReleaseNotes Description = "Next patch version" }); + + async ValueTask RelocateOpenIssues(Milestone originalMilestone, int moveToMilestoneNumber) + { + if (originalMilestone.OpenIssues + originalMilestone.ClosedIssues > 0) + { + var issuesInUnusedMilestone = await client.Search.SearchIssues(new SearchIssuesRequest + { + Milestone = originalMilestone.Title, + Repos = { { RepoOwner, RepoName } } + }); + + var issueUpdateTasks = new List(); + foreach (var I in issuesInUnusedMilestone.Items) + { + if (I.State.Value != ItemState.Closed) + issueUpdateTasks.Add(client.Issue.Update(RepoOwner, RepoName, I.Number, new IssueUpdate + { + Milestone = moveToMilestoneNumber + })); + + if (I.PullRequest != null && I.PullRequest.Merged) + { + Console.WriteLine($"Adding additional merged PR #{I.Number}..."); + var task = GetReleaseNotesFromPR(client, I, doNotCloseMilestone, false, false); + noteTasks.Add(task); + allTasks.Add(task); + } + } + + await Task.WhenAll(issueUpdateTasks).ConfigureAwait(false); + } + } + if (version.Build == 0) { // close the patch milestone if it exists @@ -326,39 +359,10 @@ namespace Tgstation.Server.ReleaseNotes async ValueTask DeleteMilestone(Milestone milestoneToDelete, int moveToMilestoneNumber) { Console.WriteLine($"Moving {milestoneToDelete.OpenIssues} open issues and {milestoneToDelete.ClosedIssues} closed issues from unused patch milestone {milestoneToDelete.Title} to upcoming ones and deleting..."); - if (milestoneToDelete.OpenIssues + milestoneToDelete.ClosedIssues > 0) - { - var issuesInUnusedMilestone = await client.Search.SearchIssues(new SearchIssuesRequest - { - Milestone = milestoneToDelete.Title, - Repos = { { RepoOwner, RepoName } } - }); - - var issueUpdateTasks = new List(); - foreach (var I in issuesInUnusedMilestone.Items) - { - if (I.State.Value != ItemState.Closed) - issueUpdateTasks.Add(client.Issue.Update(RepoOwner, RepoName, I.Number, new IssueUpdate - { - Milestone = moveToMilestoneNumber - })); - - if (I.PullRequest != null) - { - Console.WriteLine($"Adding additional merged PR #{I.Number}..."); - var task = GetReleaseNotesFromPR(client, I, doNotCloseMilestone, false, false); - noteTasks.Add(task); - allTasks.Add(task); - } - } - - await Task.WhenAll(issueUpdateTasks).ConfigureAwait(false); - } - + await RelocateOpenIssues(milestoneToDelete, moveToMilestoneNumber); allTasks.Add(client.Issue.Milestone.Delete(RepoOwner, RepoName, milestoneToDelete.Number)); } - var unreleasedNextPatchMilestone = milestones.FirstOrDefault(x => x.Title.StartsWith($"v{highestReleaseVersion.Major}.{highestReleaseVersion.Minor}.")); if (unreleasedNextPatchMilestone != null) await DeleteMilestone(unreleasedNextPatchMilestone, nextPatchMilestone.Number); @@ -401,7 +405,11 @@ namespace Tgstation.Server.ReleaseNotes if (unreleasedNextMinorMilestone != null) await DeleteMilestone(unreleasedNextMinorMilestone, nextMinorMilestone.Number); } + else + await RelocateOpenIssues(milestone, nextMinorMilestone.Number); } + else + await RelocateOpenIssues(milestone, nextPatchMilestone.Number); } newNotes.Append(milestone.HtmlUrl);