Browse Source

Merge "Add configurable footer-message reports"

changes/52/80152/2
Jenkins 8 years ago committed by Gerrit Code Review
parent
commit
b9abf2f090
  1. 5
      doc/source/zuul.rst
  2. 34
      tests/fixtures/layout-footer-message.yaml
  3. 40
      tests/test_scheduler.py
  4. 1
      zuul/layoutvalidator.py
  5. 1
      zuul/model.py
  6. 3
      zuul/scheduler.py

5
doc/source/zuul.rst

@ -238,6 +238,11 @@ explanation of each of the parameters::
reported back to Gerrit when at least one voting build fails.
Defaults to "Build failed."
**footer-message**
An optional field to supply additional information after test results.
Useful for adding information about the CI system such as debugging
and contact details.
**manager**
There are currently two schemes for managing pipelines:

34
tests/fixtures/layout-footer-message.yaml vendored

@ -0,0 +1,34 @@
includes:
- python-file: custom_functions.py
pipelines:
- name: gate
manager: DependentPipelineManager
failure-message: Build failed. For information on how to proceed, see http://wiki.example.org/Test_Failures
footer-message: For CI problems and help debugging, contact ci@example.org
trigger:
gerrit:
- event: comment-added
approval:
- approved: 1
success:
gerrit:
verified: 2
submit: true
smtp:
to: success@example.org
failure:
gerrit:
verified: -2
smtp:
to: failure@example.org
start:
gerrit:
verified: 0
precedence: high
projects:
- name: org/project
gate:
- test1
- test2

40
tests/test_scheduler.py

@ -3672,3 +3672,43 @@ class TestScheduler(testtools.TestCase):
self.worker.hold_jobs_in_build = False
self.worker.release()
self.waitUntilSettled()
def test_footer_message(self):
"Test a pipeline's footer message is correctly added to the report."
self.config.set('zuul', 'layout_config',
'tests/fixtures/layout-footer-message.yaml')
self.sched.reconfigure(self.config)
self.registerJobs()
A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
A.addApproval('CRVW', 2)
self.worker.addFailTest('test1', A)
self.fake_gerrit.addEvent(A.addApproval('APRV', 1))
self.waitUntilSettled()
B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
B.addApproval('CRVW', 2)
self.fake_gerrit.addEvent(B.addApproval('APRV', 1))
self.waitUntilSettled()
self.assertEqual(2, len(self.smtp_messages))
failure_body = """\
Build failed. For information on how to proceed, see \
http://wiki.example.org/Test_Failures
- test1 http://logs.example.com/1/1/gate/test1/0 : FAILURE in 0s
- test2 http://logs.example.com/1/1/gate/test2/1 : SUCCESS in 0s
For CI problems and help debugging, contact ci@example.org"""
success_body = """\
Build succeeded.
- test1 http://logs.example.com/2/1/gate/test1/2 : SUCCESS in 0s
- test2 http://logs.example.com/2/1/gate/test2/3 : SUCCESS in 0s
For CI problems and help debugging, contact ci@example.org"""
self.assertEqual(failure_body, self.smtp_messages[0]['body'])
self.assertEqual(success_body, self.smtp_messages[1]['body'])

1
zuul/layoutvalidator.py

@ -79,6 +79,7 @@ class LayoutSchema(object):
'description': str,
'success-message': str,
'failure-message': str,
'footer-message': str,
'dequeue-on-new-patchset': bool,
'trigger': trigger,
'success': report_actions,

1
zuul/model.py

@ -64,6 +64,7 @@ class Pipeline(object):
self.description = None
self.failure_message = None
self.success_message = None
self.footer_message = None
self.dequeue_on_new_patchset = True
self.job_trees = {} # project -> JobTree
self.manager = None

3
zuul/scheduler.py

@ -228,6 +228,7 @@ class Scheduler(threading.Thread):
"Build failed.")
pipeline.success_message = conf_pipeline.get('success-message',
"Build succeeded.")
pipeline.footer_message = conf_pipeline.get('footer-message', "")
pipeline.dequeue_on_new_patchset = conf_pipeline.get(
'dequeue-on-new-patchset', True)
@ -1438,6 +1439,8 @@ class BasePipelineManager(object):
name = job.name + ' '
ret += '- %s%s : %s%s%s\n' % (name, url, result, elapsed,
voting)
ret += '\n'
ret += self.pipeline.footer_message
return ret
def formatDescription(self, build):

Loading…
Cancel
Save