Better GitHub error messaging

Fixes #612
This commit is contained in:
Joseph Schorr 2015-10-16 13:51:50 -04:00
parent 2f42a4d94d
commit d9e001b688
2 changed files with 23 additions and 9 deletions

View file

@ -159,6 +159,13 @@ class GithubBuildTrigger(BuildTriggerHandler):
source = self.config['build_source']
return github_trigger.get_public_url(source)
@staticmethod
def _get_error_message(ghe, default_msg):
if ghe.data.get('errors') and ghe.data['errors'][0].get('message'):
return ghe.data['errors'][0]['message']
return default_msg
def activate(self, standard_webhook_url):
config = self.config
new_build_source = config['build_source']
@ -179,12 +186,14 @@ class GithubBuildTrigger(BuildTriggerHandler):
'value': public_key,
},
]
try:
deploy_key = gh_repo.create_key('%s Builder' % app.config['REGISTRY_TITLE'],
public_key)
config['deploy_key_id'] = deploy_key.id
except GithubException:
msg = 'Unable to add deploy key to repository: %s' % new_build_source
except GithubException as ghe:
default_msg = 'Unable to add deploy key to repository: %s' % new_build_source
msg = GithubBuildTrigger._get_error_message(ghe, default_msg)
raise TriggerActivationException(msg)
# Add the webhook to the GitHub repository.
@ -192,12 +201,14 @@ class GithubBuildTrigger(BuildTriggerHandler):
'url': standard_webhook_url,
'content_type': 'json',
}
try:
hook = gh_repo.create_hook('web', webhook_config)
config['hook_id'] = hook.id
config['master_branch'] = gh_repo.default_branch
except GithubException:
msg = 'Unable to create webhook on repository: %s' % new_build_source
default_msg = 'Unable to create webhook on repository: %s' % new_build_source
msg = GithubBuildTrigger._get_error_message(ghe, default_msg)
raise TriggerActivationException(msg)
return config, {'private_key': private_key}
@ -224,16 +235,18 @@ class GithubBuildTrigger(BuildTriggerHandler):
except KeyError:
# There was no config['deploy_key_id'], thus this is an old trigger without a deploy key.
pass
except GithubException:
msg = 'Unable to remove deploy key: %s' % config['deploy_key_id']
except GithubException as ghe:
default_msg = 'Unable to remove deploy key: %s' % config['deploy_key_id']
msg = GithubBuildTrigger._get_error_message(ghe, default_msg)
raise TriggerDeactivationException(msg)
# Remove the webhook.
try:
hook = repo.get_hook(config['hook_id'])
hook.delete()
except GithubException:
msg = 'Unable to remove hook: %s' % config['hook_id']
except GithubException as ghe:
default_msg = 'Unable to remove hook: %s' % config['hook_id']
msg = GithubBuildTrigger._get_error_message(ghe, default_msg)
raise TriggerDeactivationException(msg)
config.pop('hook_id', None)
@ -435,7 +448,8 @@ class GithubBuildTrigger(BuildTriggerHandler):
repo = gh_client.get_repo(source)
default_branch = repo.default_branch
except GithubException as ghe:
raise TriggerStartException(ghe.data['message'])
msg = GithubBuildTrigger._get_error_message(ghe, 'Unable to start build trigger')
raise TriggerStartException(msg)
def get_branch_sha(branch_name):
branch = repo.get_branch(branch_name)

View file

@ -119,7 +119,7 @@ angular.module('quay').directive('setupTriggerDialog', function () {
$scope.canceled({'trigger': $scope.trigger});
return ApiService.getErrorMessage(resp) +
'\n\nThis usually means that you do not have admin access on the repository.';
'\n\nNote: Errors can occur if you do not have admin access on the repository.';
});
ApiService.activateBuildTrigger(data, params).then(function(resp) {