Commit Graph

13 Commits

Author SHA1 Message Date
Michael Kubacki 4f4673846f .github/GitHub.py: Update bot in redundant comment check
The project moved from using the `github-actions[bot]` bot account to
the `tianocore-assign-reviewers[bot]` account. A check is in place to
prevent the "`WARNING: Cannot add some reviewers`" from appearing
more than once if nothing has changed in the content it would post.

This change updates the bot account to the current one so the check
can work again.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-10-01 01:19:00 +00:00
Michael Kubacki 51ada84cd5 .github/request-reviews.yml: Move workflow Py code to file
To make the Python code used within the action more mantainable over
time, it is moved to a standalone script in .github/scripts.

No functional changes are made to the workflow itself.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki 59ad8aeda6 .github/request-reviews.yml: Formatting (non-functional)
Updates code for PEP8 formatting by using the Black code formatter.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki 32a099c358 .github/request-reviews.yml: Improve doc and dbg messages
Adds additional documentation and cleans up debug messages printed
to GitHub workflow output (available in the GitHub Actions pane).

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki f617b6ee0e .github/request-reviews.yml: Only post non-collab message once
Enhances the flow that adds a comment on a PR if a non-collaborator
is in the reviewer list by checking if a comment was previously left
on the PR. If it was for the same set of non-collaborators, another
comment is not created. If a new non-collaborator is discovered, the
message will be left identifying that new user account.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki 09ad1a0072 .github/request-reviews.yml: Add non-collab admin notification
If a non-collaborator is part of the reviewer list, an admin needs
to be notified so they can be removed.

This change finds the list of admins for the repo and notifies them
in the comment left on the PR describing the list of non-collaborator
users. The message itself is cleaned up to show only the
non-collaborator users for ease of identification.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki e86647decd .github/request-reviews.yml: Update PR reviewer exclusion
Updates logic to:

- Not request reviews from reviewers that have already left a review
  on the PR. Previously, the reviewers review (e.g. approval) would
  remain on the PR, but they would be notified on each change to the
  PR. This approach follows the expected notification process for
  requesting reviews which is one time. Maintainers and reviewers can
  set up their own notifications for more granular updates on PR
  activity separately.

- Add the collaborator reviewers if a reviewer(s) is found to not be
  a collaborator. This is an improvement to today's behavior which is
  to not add any reviewers if a single reviewer is not a collaborator
  of the repo.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki eaf2b82eda .github/request-reviews.yml: Removed unused functionality
Removed the `download_gh_file()` function which is no longer needed
with sparse checkout.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki d3e9e10770 .github/request-reviews.yml: Switch to PyGithub
Uses PyGithub for GitHub interactions instead of the GitHub REST API
directly.

This simplifies the code, improves error handling and robustness, and
lets the PyGithub project abstract GitHub REST API changes that may
occur over time.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki 98f17cdcf4 .github/request-reviews.yml: Switch to GitPython
Uses `GitPython` instead of invoking the git executable directly.

This has the benefit of improving code readability and less support
code for binary interaction.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki 057c26710a .github/request-reviews.yml: Cache PIP modules
- Optimizes and makes the PIP module installation process for the
workflow more robust by caching the pip modules used so the only
time the workflow needs to reach to PyPi is when new PIP modules
are published.

- Improves long term stability by locking the major versions for PIP
modules in the workflow. This is to reduce overall maintenance over
time to automatically pick up new versions while also not being
broken in the process.

- Removes edk2-pytool-extensions as it is not used.

The new "requirements.txt" file is used to lock versions and support
the caching step which depends on a requirements file.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-08-05 19:30:26 +00:00
Michael Kubacki 0343e75233 .github/request-reviews.yml: Switch to pull_request_target
This change simply moves the trigger to `pull_request_target`. The
rest of this message contains verbose details related to that.

`pull_request_target` is used instead of `pull_request` since the
default GitHub token cannot pick up write permissions with the
`pull_request` type on PRs from public forks. Write permission is
needed to add reviewrs. This was previously tested on an edk2 fork
where PRs were not from other public forks into the fork being used
for testing but directly on the fork itself.

Because `pull_request_target` runs the pull request in the context
of the base branch (not the PR branch) some logic needs slightly
modified. The main change is that the GitHub context will no longer
give the PR branch HEAD as the PR commit SHA (i.e.
`github.event.pull_request.head.sha`). The SHA will be the base
branch (`master`) SHA as that is what is checked out for the
workflow run. SO, the actual PR SHA is now fetched separately.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-07-27 05:59:14 +00:00
Michael Kubacki 89a06a245b .github: Add GitHub helper python script
Adds a script that provides GitHub API helpers for workflows and
other GitHub automation in the repository.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2024-07-25 02:28:49 +00:00