You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.3 KiB
89 lines
2.3 KiB
#!/usr/bin/env python3 |
|
|
|
import logging |
|
|
|
from zuul.driver.github.githubconnection import GithubConnection |
|
from zuul.driver.github import GithubDriver |
|
from zuul.model import Change, Project |
|
|
|
# This is a template with boilerplate code for debugging github issues |
|
|
|
# TODO: for real use override the following variables |
|
server = 'github.com' |
|
api_token = 'xxxx' |
|
appid = 2 |
|
appkey = '/opt/project/appkey' |
|
|
|
org = 'example' |
|
repo = 'sandbox' |
|
pull_nr = 8 |
|
|
|
|
|
def configure_logging(context): |
|
stream_handler = logging.StreamHandler() |
|
logger = logging.getLogger(context) |
|
logger.addHandler(stream_handler) |
|
logger.setLevel(logging.DEBUG) |
|
|
|
|
|
# uncomment for more logging |
|
# configure_logging('urllib3') |
|
# configure_logging('github3') |
|
# configure_logging('cachecontrol') |
|
|
|
|
|
# This is all that's needed for getting a usable github connection |
|
def create_connection(server, api_token): |
|
driver = GithubDriver() |
|
connection_config = { |
|
'server': server, |
|
'api_token': api_token, |
|
} |
|
conn = GithubConnection(driver, 'github', connection_config) |
|
conn._authenticateGithubAPI() |
|
return conn |
|
|
|
|
|
def create_connection_app(server, appid, appkey): |
|
driver = GithubDriver() |
|
connection_config = { |
|
'server': server, |
|
'app_id': appid, |
|
'app_key': appkey, |
|
} |
|
conn = GithubConnection(driver, 'github', connection_config) |
|
conn._authenticateGithubAPI() |
|
conn._prime_installation_map() |
|
return conn |
|
|
|
|
|
def get_change(connection: GithubConnection, |
|
org: str, |
|
repo: str, |
|
pull: int) -> Change: |
|
p = Project("%s/%s" % (org, repo), connection.source) |
|
github = connection.getGithubClient(p.name) |
|
pr = github.pull_request(org, repo, pull) |
|
sha = pr.head.sha |
|
return conn._getChange(p, pull, sha, True) |
|
|
|
|
|
# create github connection with api token |
|
conn = create_connection(server, api_token) |
|
|
|
# create github connection with app key |
|
# conn = create_connection_app(server, appid, appkey) |
|
|
|
|
|
# Now we can do anything we want with the connection, e.g. check canMerge for |
|
# a pull request. |
|
change = get_change(conn, org, repo, pull_nr) |
|
|
|
print(conn.canMerge(change, {'cc/gate2'})) |
|
|
|
|
|
# Or just use the github object. |
|
# github = conn.getGithubClient() |
|
# |
|
# repository = github.repository(org, repo) |
|
# print(repository.as_dict())
|
|
|