https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/92049
Backport c99d1156c28dfed67a8479dd97608d1f0d6cd593 Requested by: @tstellar >From a82ddb9d8122a2e73c8385d38147782dbdbbe0aa Mon Sep 17 00:00:00 2001 From: Tom Stellard <tstel...@redhat.com> Date: Mon, 13 May 2024 16:31:21 -0700 Subject: [PATCH] [workflows] Add a job for requesting a release note on release branch PRs (#91826) We have been collecting release notes from the PRs for most of the 18.1.x releases and this just helps automate the process. (cherry picked from commit c99d1156c28dfed67a8479dd97608d1f0d6cd593) --- .github/workflows/pr-request-release-note.yml | 43 +++++++++++++++++++ llvm/utils/git/github-automation.py | 33 ++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 .github/workflows/pr-request-release-note.yml diff --git a/.github/workflows/pr-request-release-note.yml b/.github/workflows/pr-request-release-note.yml new file mode 100644 index 0000000000000..0fcb95f1fe294 --- /dev/null +++ b/.github/workflows/pr-request-release-note.yml @@ -0,0 +1,43 @@ +name: PR Request Release Note + +permissions: + contents: read + pull-requests: write + +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: ${{ github.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}} diff --git a/llvm/utils/git/github-automation.py b/llvm/utils/git/github-automation.py index f78d91059ecd3..ac4077edb4fcc 100755 --- a/llvm/utils/git/github-automation.py +++ b/llvm/utils/git/github-automation.py @@ -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. " + pr.as_issue().create_comment(comment) + + parser = argparse.ArgumentParser() parser.add_argument( "--token", type=str, required=True, help="GitHub authentiation token" @@ -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": @@ -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) _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits