mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-04-02 13:12:09 +00:00
workflows: Make issue-subscriber more robust for labels with special characters
Also, replace the existing actionscript implementation with a python script that can be run outside of GitHub Actions. The intention is that going forward, all github action functionality would be implemented in this script. Reviewed By: kwk Differential Revision: https://reviews.llvm.org/D116762
This commit is contained in:
parent
21dad9a522
commit
a2adebf409
34
.github/workflows/issue-subscriber.yml
vendored
34
.github/workflows/issue-subscriber.yml
vendored
@ -10,26 +10,16 @@ jobs:
|
||||
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@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 }}
|
||||
|
50
llvm/utils/git/github-automation.py
Executable file
50
llvm/utils/git/github-automation.py
Executable file
@ -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()
|
Loading…
x
Reference in New Issue
Block a user