diff --git a/scripts/ci/gitlab-pipeline-status b/scripts/ci/gitlab-pipeline-status index 78e72f6008..0c1e8bd8a7 100755 --- a/scripts/ci/gitlab-pipeline-status +++ b/scripts/ci/gitlab-pipeline-status @@ -48,18 +48,25 @@ def get_local_branch_commit(branch): return result +def get_json_http_response(url): + """ + Returns the JSON content of an HTTP GET request to gitlab.com + """ + connection = http.client.HTTPSConnection('gitlab.com') + connection.request('GET', url=url) + response = connection.getresponse() + if response.code != http.HTTPStatus.OK: + raise CommunicationFailure("Failed to receive a successful response") + return json.loads(response.read()) + + def get_pipeline_status(project_id, commit_sha1): """ Returns the JSON content of the pipeline status API response """ url = '/api/v4/projects/{}/pipelines?sha={}'.format(project_id, commit_sha1) - connection = http.client.HTTPSConnection('gitlab.com') - connection.request('GET', url=url) - response = connection.getresponse() - if response.code != http.HTTPStatus.OK: - raise CommunicationFailure("Failed to receive a successful response") - json_response = json.loads(response.read()) + json_response = get_json_http_response(url) # As far as I can tell, there should be only one pipeline for the same # project + commit. If this assumption is false, we can add further