in utils/comment-github-pr.py [0:0]
def comment_on_github_pr(message):
"""Comment on a PR. (assumes the script is invoked in a github workflow)"""
# There is no message to be reported, skip
if not message:
return 0
# Check whether called via workflow
token = os.getenv("GITHUB_TOKEN")
if not token:
log.error("Did not find GITHUB_TOKEN environment variable, abort")
return 1
github_handle = Github(token)
# Enable to see API
# log.info("github handle: %r", dir(github_handle))
# Check the current event
event_file = os.getenv("GITHUB_EVENT_PATH")
event = None
try:
with open(event_file) as f:
event = json.load(f)
except Exception as e:
log.error("Failed to load event from file %s, failed with %r", event_file, e)
log.debug("Obtained event: %s", json.dumps(event, indent=4))
if not event:
log.error("Did not find an even file, abort.")
return 1
# Get repository for current event
# https://pygithub.readthedocs.io/en/latest/github_objects/Repository.html
repo_name = event["repository"]["full_name"]
repo = github_handle.get_repo(repo_name)
# Get pull request object for current event
# https://pygithub.readthedocs.io/en/latest/github_objects/PullRequest.html
pr_event = event.get("pull_request")
if pr_event:
pull_request_number = pr_event["number"]
pull_request = repo.get_pull(int(pull_request_number))
# Enable to see API
# log.info("pull request: %r", dir(pull_request))
# Create and post message to comment stream
pull_request.create_issue_comment(message)
else:
log.info("Current event is not a pull request, do not comment.")