[llvm-branch-commits] [llvm] release/18.x: [workflows] Add a job for requesting a release note on release branch PRs (#91826) (PR #92049)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon May 13 16:38:08 PDT 2024


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 <tstellar at 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 at 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)



More information about the llvm-branch-commits mailing list