[llvm] [workflows] Fix release note request workflow (PR #94784)

Tom Stellard via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 7 11:13:11 PDT 2024


https://github.com/tstellar created https://github.com/llvm/llvm-project/pull/94784

We need to use the issue-write workflow to write the comments, because pull_request targets don't have permissions to write comments.

>From 31751bad57f1003f3841ca6a16b811e19df1d08e Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Fri, 7 Jun 2024 10:23:28 -0700
Subject: [PATCH] [workflows] Fix release note request workflow

We need to use the issue-write workflow to write the comments, because
pull_request targets don't have permissions to write comments.
---
 .github/workflows/issue-write.yml             |  7 ++++++-
 .github/workflows/pr-request-release-note.yml |  8 +++++++-
 llvm/utils/git/github-automation.py           | 11 ++++++++++-
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/issue-write.yml b/.github/workflows/issue-write.yml
index e003be006c4e1..616b323ad5fac 100644
--- a/.github/workflows/issue-write.yml
+++ b/.github/workflows/issue-write.yml
@@ -5,6 +5,7 @@ on:
     workflows:
       - "Check code formatting"
       - "Check for private emails used in PRs"
+      - "PR Request Release Note"
     types:
       - completed
 
@@ -92,7 +93,11 @@ jobs:
 
             var pr_number = 0;
             gql_result.repository.ref.associatedPullRequests.nodes.forEach((pr) => {
-              if (pr.baseRepository.owner.login = context.repo.owner && pr.state == 'OPEN') {
+
+              // The largest PR number is the one we care about.  The only way
+              // to have more than one associated pull requests is if all the
+              // old pull requests are in the closed state.
+              if (pr.baseRepository.owner.login = context.repo.owner && pr.number > pr_number) {
                 pr_number = pr.number;
               }
             });
diff --git a/.github/workflows/pr-request-release-note.yml b/.github/workflows/pr-request-release-note.yml
index 5e48ce7aee2e2..2fa501dda16bb 100644
--- a/.github/workflows/pr-request-release-note.yml
+++ b/.github/workflows/pr-request-release-note.yml
@@ -2,7 +2,6 @@ name: PR Request Release Note
 
 permissions:
   contents: read
-  pull-requests: write
 
 on:
   pull_request:
@@ -41,3 +40,10 @@ jobs:
             --token "$GITHUB_TOKEN" \
             request-release-note \
             --pr-number ${{ github.event.pull_request.number}}
+
+      - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 #v4.3.0
+        if: always()
+        with:
+          name: workflow-args
+          path: |
+            comments
diff --git a/llvm/utils/git/github-automation.py b/llvm/utils/git/github-automation.py
index 1766ccb38ba25..46d05dab005c2 100755
--- a/llvm/utils/git/github-automation.py
+++ b/llvm/utils/git/github-automation.py
@@ -11,6 +11,7 @@
 import argparse
 from git import Repo  # type: ignore
 import html
+import json
 import github
 import os
 import re
@@ -653,7 +654,15 @@ def request_release_note(token: str, repo_name: str, pr_number: int):
         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)
+    try:
+        pr.as_issue().create_comment(comment)
+    except:
+        # Failed to create comment so emit file instead
+        with open("comments", "w") as file:
+            data = [
+                {"body" : comment}
+            ]
+            json.dump(data, file)
 
 
 parser = argparse.ArgumentParser()



More information about the llvm-commits mailing list