Skip to content

Commit

Permalink
[workflows] Add a job for requesting a release note on merged PRs
Browse files Browse the repository at this point in the history
  • Loading branch information
tstellar committed May 10, 2024
1 parent f80075f commit be096f4
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 0 deletions.
42 changes: 42 additions & 0 deletions .github/workflows/pr-request-release-note.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: PR Request Release Note

permissions:
contents: read

on:
pull_request:
types:
- closed

jobs:
request-release-note:
if: >-
github.repository_owner == 'llvm' &&
startsWith(github.ref, 'refs/heads/release')
runs-on: ubuntu-latest
steps:
# We need to pull the script from the main branch, so that we ensure
# we get the latest version of this script.
- name: Checkout Scripts
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
sparse-checkout: |
llvm/utils/git/requirements.txt
llvm/utils/git/github-automation.py
sparse-checkout-cone-mode: false

- name: Install Dependencies
run: |
pip install -r llvm/utils/git/requirements.txt
- name: Request Release Note
env:
# We need to use an llvmbot token here, because we are mentioning a user.
GITHUB_TOKEN: ${{ secrets.ISSUE_SUBSCRIBER_TOKEN }}
run: |
python3 llvm/utils/git/github-automation.py \
--repo "$GITHUB_REPOSITORY" \
--token "$GITHUB_TOKEN" \
request-release-note \
--pr-number ${{ github.event.pull_request.number}}
33 changes: 33 additions & 0 deletions llvm/utils/git/github-automation.py
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,25 @@ def execute_command(self) -> bool:
return False


def request_release_note(token:str, repo_name:str, pr_number:int):
repo = github.Github(token).get_repo(repo_name)
pr = repo.get_issue(pr_number).as_pull_request()
submitter = pr.user.login
if submitter == 'llvmbot':
m = re.search("Requested by: @(.+)$", pr.body)
if not m:
submitter = None
print("Warning could not determine user who requested backport.")
submitter = m.group(1)

mention = ''
if submitter:
mention = f'@{submitter}'

comment = f"{mention} (or anyone else). If you would like to add a note about this fix in the release notes (completely optional). Please reply to this comment with a one or two sentence description of the fix. When you are done, please add the release:note label to this PR. "
self.pr.as_issue().create_comment(comment)


parser = argparse.ArgumentParser()
parser.add_argument(
"--token", type=str, required=True, help="GitHub authentiation token"
Expand Down Expand Up @@ -736,6 +755,18 @@ def execute_command(self) -> bool:
help="Set the default user and email for the git repo in LLVM_PROJECT_DIR to llvmbot",
)

request_release_note_parser = subparsers.add_parser(
"request-release-note",
help="Request a release note for a pull request",
)
request_release_note_parser.add_argument(
"--pr-number",
type=int,
required=True,
help="The pull request to request the release note",
)


args = parser.parse_args()

if args.command == "issue-subscriber":
Expand Down Expand Up @@ -771,3 +802,5 @@ def execute_command(self) -> bool:
sys.exit(1)
elif args.command == "setup-llvmbot-git":
setup_llvmbot_git()
elif args.command == "request-release-note":
request_release_note(args.token, args.repo, args.pr_number)

0 comments on commit be096f4

Please sign in to comment.