Merge "Simplify github status descriptions" into feature/zuulv3

This commit is contained in:
Jenkins 2017-08-02 05:31:57 +00:00 committed by Gerrit Code Review
commit 7445eedb01
3 changed files with 68 additions and 5 deletions

View File

@ -34,6 +34,27 @@
github:
comment: false
- pipeline:
name: this_is_a_really_stupid_long_name_for_a_pipeline_that_should_never_be_used_in_production_becuase_it_will_be_too_long_for_the_API_to_make_use_of_without_crashing
description: Uncommon reporting
manager: independent
trigger:
github:
- event: pull_request
action: comment
comment: 'long pipeline'
start:
github:
status: 'pending'
success:
github:
comment: false
status: 'success'
status-url: http://logs.example.com/{tenant.name}/{pipeline.name}/{change.project}/{change.number}/{buildset.uuid}/
failure:
github:
comment: false
- pipeline:
name: push-reporting
description: Uncommon reporting
@ -68,6 +89,9 @@
reporting:
jobs:
- project-test1
this_is_a_really_stupid_long_name_for_a_pipeline_that_should_never_be_used_in_production_becuase_it_will_be_too_long_for_the_API_to_make_use_of_without_crashing:
jobs:
- project-test1
- project:
name: org/project2

View File

@ -272,7 +272,8 @@ class TestGithubDriver(ZuulTestCase):
check_url = ('http://zuul.example.com/status/#%s,%s' %
(A.number, A.head_sha))
self.assertEqual('tenant-one/check', check_status['context'])
self.assertEqual('Standard check', check_status['description'])
self.assertEqual('check status: pending',
check_status['description'])
self.assertEqual('pending', check_status['state'])
self.assertEqual(check_url, check_status['url'])
self.assertEqual(0, len(A.comments))
@ -287,6 +288,8 @@ class TestGithubDriver(ZuulTestCase):
check_url = ('http://zuul.example.com/status/#%s,%s' %
(A.number, A.head_sha))
self.assertEqual('tenant-one/check', check_status['context'])
self.assertEqual('check status: success',
check_status['description'])
self.assertEqual('success', check_status['state'])
self.assertEqual(check_url, check_status['url'])
self.assertEqual(1, len(A.comments))
@ -312,6 +315,8 @@ class TestGithubDriver(ZuulTestCase):
self.assertEqual(3, len(statuses))
report_status = statuses[0]
self.assertEqual('tenant-one/reporting', report_status['context'])
self.assertEqual('reporting status: success',
report_status['description'])
self.assertEqual('success', report_status['state'])
self.assertEqual(2, len(A.comments))
@ -329,6 +334,33 @@ class TestGithubDriver(ZuulTestCase):
self.assertThat(report_status['url'][len(base):],
MatchesRegex('^[a-fA-F0-9]{32}\/$'))
@simple_layout('layouts/reporting-github.yaml', driver='github')
def test_truncated_status_description(self):
project = 'org/project'
# pipeline reports pull status both on start and success
self.executor_server.hold_jobs_in_build = True
A = self.fake_github.openFakePullRequest(project, 'master', 'A')
self.fake_github.emitEvent(
A.getCommentAddedEvent('long pipeline'))
self.waitUntilSettled()
statuses = self.fake_github.statuses[project][A.head_sha]
self.assertEqual(1, len(statuses))
check_status = statuses[0]
# Status is truncated due to long pipeline name
self.assertEqual('status: pending',
check_status['description'])
self.executor_server.hold_jobs_in_build = False
self.executor_server.release()
self.waitUntilSettled()
# We should only have two statuses for the head sha
statuses = self.fake_github.statuses[project][A.head_sha]
self.assertEqual(2, len(statuses))
check_status = statuses[0]
# Status is truncated due to long pipeline name
self.assertEqual('status: success',
check_status['description'])
@simple_layout('layouts/reporting-github.yaml', driver='github')
def test_push_reporting(self):
project = 'org/project2'
@ -427,7 +459,7 @@ class TestGithubDriver(ZuulTestCase):
check_url = ('http://zuul.example.com/status/#%s,%s' %
(A.number, A.head_sha))
self.assertEqual('tenant-one/check', check_status['context'])
self.assertEqual('Standard check', check_status['description'])
self.assertEqual('check status: pending', check_status['description'])
self.assertEqual('pending', check_status['state'])
self.assertEqual(check_url, check_status['url'])
self.assertEqual(0, len(A.comments))
@ -443,6 +475,7 @@ class TestGithubDriver(ZuulTestCase):
(A.number, A.head_sha))
self.assertEqual('tenant-one/check', check_status['context'])
self.assertEqual('success', check_status['state'])
self.assertEqual('check status: success', check_status['description'])
self.assertEqual(check_url, check_status['url'])
self.assertEqual(1, len(A.comments))
self.assertThat(A.comments[0],

View File

@ -101,9 +101,15 @@ class GithubReporter(BaseReporter):
url_pattern = sched_config.get('webapp', 'status_url')
url = item.formatUrlPattern(url_pattern) if url_pattern else ''
description = ''
if item.pipeline.description:
description = item.pipeline.description
description = '%s status: %s' % (item.pipeline.name,
self._commit_status)
if len(description) >= 140:
# This pipeline is named with a long name and thus this
# desciption would overflow the GitHub limit of 1024 bytes.
# Truncate the description. In practice, anything over 140
# characters seems to trip the limit.
description = 'status: %s' % self._commit_status
self.log.debug(
'Reporting change %s, params %s, status:\n'