jenkins/raspberrypi/pyscripts/github.py (34 lines of code) (raw):
# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for full license tagsrmation.
import requests
def get_sha_from_commit(repo, commit):
"""
given a GIT repo and a commit ID, return the SHA for that commit
"""
if not commit.startswith("refs/"):
commit = "refs/heads/" + commit
response = requests.get(
"https://api.github.com/repos/{}/git/{}".format(repo, commit)
)
if response.status_code == 200:
return response.json()["object"]["sha"]
elif response.status_code == 404:
raise Exception("ERROR : Commit {} not found in repo {}".format(commit, repo))
else:
raise Exception(
"unexpected result looking for commit {} in repo {} status = {} response = {}".format(
commit, repo, response.status_code, response.json()
)
)
def get_sha_url_and_ref_from_prid(repo, prid):
"""
given a GIT repo and a pull request ID, return the SHA, clone_url, and ref for that pull request
"""
response = requests.get(
"https://api.github.com/repos/{}/pulls/{}".format(repo, prid)
)
if response.status_code == 200:
sha = response.json()["head"]["sha"]
url = response.json()["head"]["repo"]["clone_url"]
ref = response.json()["head"]["ref"]
return (sha, url, ref)
elif response.status_code == 405:
raise Exception("ERROR : prid {} not found in repo {}".format(prid, repo))
else:
raise Exception(
"unexpected result looking for prid {} in repo {} status = {} response = {}".format(
prid, repo, response.status_code, response.json()
)
)