[PATCH] D116762: workflows: Make issue-subscriber more robust for labels with special characters

Tom Stellard via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 14 22:06:11 PST 2022


This revision was automatically updated to reflect the committed changes.
Closed by commit rGa2adebf409ce: workflows: Make issue-subscriber more robust for labels with special characters (authored by tstellar).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116762/new/

https://reviews.llvm.org/D116762

Files:
  .github/workflows/issue-subscriber.yml
  llvm/utils/git/github-automation.py


Index: llvm/utils/git/github-automation.py
===================================================================
--- /dev/null
+++ llvm/utils/git/github-automation.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+#
+# ======- github-automation - LLVM GitHub Automation Routines--*- python -*--==#
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+# ==-------------------------------------------------------------------------==#
+
+import argparse
+import github
+import os
+
+class IssueSubscriber:
+
+    @property
+    def team_name(self) -> str:
+        return self._team_name
+
+    def __init__(self, token:str, repo:str, issue_number:int, label_name:str):
+        self.repo = github.Github(token).get_repo(repo)
+        self.org = github.Github(token).get_organization(self.repo.organization.login)
+        self.issue = self.repo.get_issue(issue_number)
+        self._team_name = 'issue-subscribers-{}'.format(label_name).lower()
+
+    def run(self) -> bool:
+        for team in self.org.get_teams():
+            if self.team_name != team.name.lower():
+                continue
+            comment = '@llvm/{}'.format(team.slug)
+            self.issue.create_comment(comment)
+            return True
+        return False
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--token', type=str, required=True)
+parser.add_argument('--repo', type=str, default=os.getenv('GITHUB_REPOSITORY', 'llvm/llvm-project'))
+subparsers = parser.add_subparsers(dest='command')
+
+issue_subscriber_parser = subparsers.add_parser('issue-subscriber')
+issue_subscriber_parser.add_argument('--label-name', type=str, required=True)
+issue_subscriber_parser.add_argument('--issue-number', type=int, required=True)
+
+args = parser.parse_args()
+
+if args.command == 'issue-subscriber':
+    issue_subscriber = IssueSubscriber(args.token, args.repo, args.issue_number, args.label_name)
+    issue_subscriber.run()
Index: .github/workflows/issue-subscriber.yml
===================================================================
--- .github/workflows/issue-subscriber.yml
+++ .github/workflows/issue-subscriber.yml
@@ -10,26 +10,16 @@
     runs-on: ubuntu-latest
     if: github.repository == 'llvm/llvm-project'
     steps:
+    - name: Setup Automation Script
+      run:  |
+        curl -O -L https://raw.githubusercontent.com/$GITHUB_REPOSITORY/$GITHUB_SHA/llvm/utils/git/github-automation.py
+        chmod a+x github-automation.py
+        pip install PyGithub
+
     - name: Update watchers
-      uses: actions/github-script at v5
-      with:
-        github-token: ${{ secrets.ISSUE_MENTION_SECRET }}
-        script: |
-            const teamname = "issue-subscribers-" + context.payload.label.name.replace(/ /g, "-").replace(":","-").replace("/","-");
-            const comment = "@llvm/" + teamname;
-            try {
-              // This will throw an exception if the team does not exist and no
-              // comment will be created.
-              team = await github.rest.teams.getByName({
-                org: context.repo.owner,
-                team_slug: teamname
-              });
-              github.rest.issues.createComment({
-                issue_number: context.issue.number,
-                owner: context.repo.owner,
-                repo: context.repo.repo,
-                body: comment
-              });
-            } catch (e){
-              console.log(e);
-            }
+      run: |
+        ./github-automation.py \
+          --token ${{ secrets.ISSUE_SUBSCRIBER_TOKEN }} \
+          issue-subscriber \
+          --issue-number ${{ github.event.issue.number }} \
+          --label-name ${{ github.event.label.name }}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D116762.400239.patch
Type: text/x-patch
Size: 3833 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220115/73db104d/attachment.bin>


More information about the llvm-commits mailing list