[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