dotnet / docs-tools

This repo contains GitHub Actions and other tools that are designed to be invoked on DocFx repositories.
Creative Commons Attribution 4.0 International
14 stars 23 forks source link

[SeQuester, RepoMan] Reduce friction to reassign slipped items from the end of a sprint #368

Open BillWagner opened 2 weeks ago

BillWagner commented 2 weeks ago

At the moment, SeQuester doesn't reliably update work items that have "slipped" from the current sprint.

If a label or comment is added, AND the item is added to a new sprint, SeQuester updates the associated work item.

This issue has two parts:

  1. If the GH issue is only assigned to "closed" (in the past) projects, move the associated work item to the "backlog" sprint. That way, open items don't show up in reports for open items in past sprints.
  2. Find a way using either SeQuester or RepoMan to trigger an update with minimal human action at the end of the sprint. The core issue is that "adding an issue to a project" or "moving an issue to a new column in a project" aren't events that updated when an issue was changed. So, SeQuester doesn't "see" the issue as updated.

/cc @adegeo

adegeo commented 1 week ago

Something we could implement now is adding a label, like 🗺️mapQUEST, and RepoMan simply removes it after it's added. That's enough to trigger SeQuester's update.


With RepoMan, there are some ways we might be able to improve it and increase its capabilities.

  1. RepoMan runs on webhook events. Unfortunately GitHub ProjectsV2 system won't send events to the webhook because that requires a GitHub App that has organization permissions, which we didn't have back when RepoMan was invented. However, with the arrival of SeQuester, we now have an app that has the correct permissions.

  2. RepoMan uses the .NET BOT to perform actions on our repos, which makes it look nice. But, that requires the .NET team's involvement whenever we need a new permissions or we add a new repo. We didn't have our own app that could do that, until SeQuester came along.

  3. RepoMan is hosted on Azure by an internal team that graciously lets us use their Azure resources, since we're working with .NET technologies. We had an incident where the team went to lock down some resources and broke RepoMan. This was due to the fact that RepoMan is an Azure Function and some of the security changes required a lot more tweaking to the Azure Function than simply flipping a switch.

I wonder for 1 and 2 if we can migrate the code into the GitHub App that powers SeQuester. RepoMan requires fast timing to events happening on issues and pull requests, this is why its an Azure Function instead of a GitHub Action. The doc org's issues-automation bot works in the same way I believe.

BillWagner commented 1 week ago

For Sequester, it needs to be updated to move any existing work items to the "backlog" sprint if the only projects it exists in are closed projects.