Fix bugs with the custom git trigger and make error reporting better

This commit is contained in:
Joseph Schorr 2015-05-10 13:38:47 -04:00
parent f858caf6cd
commit de6267700e
2 changed files with 12 additions and 8 deletions

View file

@ -991,7 +991,7 @@ class CustomBuildTrigger(BuildTriggerHandler):
'required': ['url', 'message', 'date'], 'required': ['url', 'message', 'date'],
}, },
}, },
'required': ['commits', 'ref', 'default_branch'], 'required': ['commit', 'ref', 'default_branch'],
} }
@classmethod @classmethod
@ -1005,15 +1005,15 @@ class CustomBuildTrigger(BuildTriggerHandler):
try: try:
metadata = json.loads(payload) metadata = json.loads(payload)
validate(metadata, self.payload_schema) validate(metadata, self.payload_schema)
except: except Exception as e:
raise InvalidPayloadException() raise InvalidPayloadException(e.message)
return metadata return metadata
def handle_trigger_request(self, request): def handle_trigger_request(self, request):
# Skip if there is no payload. # Skip if there is no payload.
payload = request.get_json() payload = request.data
if not payload: if not payload:
raise SkipRequestException() raise InvalidPayloadException()
logger.debug('Payload %s', payload) logger.debug('Payload %s', payload)
@ -1028,9 +1028,10 @@ class CustomBuildTrigger(BuildTriggerHandler):
prepared = PreparedBuild(self.trigger) prepared = PreparedBuild(self.trigger)
prepared.tags_from_ref(metadata['ref']) prepared.tags_from_ref(metadata['ref'])
prepared.name_from_sha(metadata['commit_sha']) prepared.name_from_sha(metadata['commit'])
prepared.subdirectory = config['subdir'] prepared.subdirectory = config['subdir']
prepared.metadata = metadata prepared.metadata = metadata
prepared.is_manual = False
return prepared return prepared

View file

@ -89,14 +89,17 @@ def build_trigger_webhook(trigger_uuid, **kwargs):
try: try:
prepared = handler.handle_trigger_request(request) prepared = handler.handle_trigger_request(request)
except ValidationRequestException: except ValidationRequestException:
logger.debug('Handler reported a validation exception: %s', handler)
# This was just a validation request, we don't need to build anything # This was just a validation request, we don't need to build anything
return make_response('Okay') return make_response('Okay')
except SkipRequestException: except SkipRequestException:
logger.debug('Handler reported to skip the build: %s', handler)
# The build was requested to be skipped # The build was requested to be skipped
return make_response('Okay') return make_response('Okay')
except InvalidPayloadException: except InvalidPayloadException as ipe:
logger.exception('Invalid payload')
# The payload was malformed # The payload was malformed
abort(400) abort(400, message=ipe.message)
pull_robot_name = model.get_pull_robot_name(trigger) pull_robot_name = model.get_pull_robot_name(trigger)
repo = model.get_repository(namespace, repository) repo = model.get_repository(namespace, repository)