blob: e3ab947c0f18da018afa9dbbfc599d952e048067 [file] [log] [blame]
Joshua Hesketh1879cf72013-08-19 14:13:15 +10001:title: Reporters
2
3Reporters
4=========
5
6Zuul can communicate results and progress back to configurable
7protocols. For example, after succeeding in a build a pipeline can be
Michael Prokop526926a2013-10-24 16:16:57 +02008configured to post a positive review back to Gerrit.
Joshua Hesketh1879cf72013-08-19 14:13:15 +10009
10There are three stages when a report can be handled. That is on:
11Start, Success or Failure. Each stage can have multiple reports.
Michael Prokop526926a2013-10-24 16:16:57 +020012For example, you can set verified on Gerrit and send an email.
Joshua Hesketh1879cf72013-08-19 14:13:15 +100013
14Gerrit
15------
16
17Zuul works with standard versions of Gerrit by invoking the
18``gerrit`` command over an SSH connection. It reports back to
19Gerrit using SSH.
20
Michael Prokop526926a2013-10-24 16:16:57 +020021The dictionary passed to the Gerrit reporter is used for ``gerrit
Joshua Hesketh1879cf72013-08-19 14:13:15 +100022review`` arguments, with the boolean value of ``true`` simply
23indicating that the argument should be present without following it
24with a value. For example, ``verified: 1`` becomes ``gerrit review
25--verified 1`` and ``submit: true`` becomes ``gerrit review
26--submit``.
27
Joshua Heskethfe485c62015-08-11 23:42:34 +100028A :ref:`connection` that uses the gerrit driver must be supplied to the
29trigger.
Joshua Hesketh5fea8672013-08-19 17:32:01 +100030
Wayne40f40042015-06-12 16:56:30 -070031GitHub
32------
33
34Zuul reports back to GitHub pull requests via GitHub API.
Jan Hrubane252a732017-01-03 15:03:09 +010035On success and failure, it creates a comment containing the build results.
36It also sets the status on start, success and failure. Status name and
37description is taken from the pipeline.
38
39A :ref:`connection` that uses the github driver must be supplied to the
40reporter. It has the following options:
41
42 **status**
43 String value (``pending``, ``success``, ``failure``) that the reporter should
44 set as the commit status on github.
45 ``status: 'success'``
46
47 **comment**
48 Boolean value (``true`` or ``false``) that determines if the reporter should
49 add a comment to the pipeline status to the github pull request. Defaults
50 to ``true``.
51 ``comment: false``
Wayne40f40042015-06-12 16:56:30 -070052
Jan Hruban49bff072015-11-03 11:45:46 +010053 **merge**
54 Boolean value (``true`` or ``false``) that determines if the reporter should
55 merge the pull reqeust. Defaults to ``false``.
56 ``merge=true``
57
Jan Hruban16ad31f2015-11-07 14:39:07 +010058 **label**
59 List of strings each representing an exact label name which should be added
60 to the pull request by reporter.
61 ``label: 'test successful'``
62
63 **unlabel**
64 List of strings each representing an exact label name which should be removed
65 from the pull request by reporter.
66 ``unlabel: 'test failed'``
67
Joshua Hesketh5fea8672013-08-19 17:32:01 +100068SMTP
69----
70
71A simple email reporter is also available.
72
Joshua Heskethfe485c62015-08-11 23:42:34 +100073A :ref:`connection` that uses the smtp driver must be supplied to the
Joshua Heskethd78b4482015-09-14 16:56:34 -060074reporter.
Joshua Heskethfe485c62015-08-11 23:42:34 +100075
Joshua Hesketh5fea8672013-08-19 17:32:01 +100076SMTP Configuration
77~~~~~~~~~~~~~~~~~~
78
Łukasz Jernaś048acb42014-03-02 18:49:41 +010079zuul.conf contains the SMTP server and default to/from as described
Joshua Hesketh5fea8672013-08-19 17:32:01 +100080in :ref:`zuulconf`.
81
Łukasz Jernaś048acb42014-03-02 18:49:41 +010082Each pipeline can overwrite the ``subject`` or the ``to`` or ``from`` address by
James E. Blaire5910202013-12-27 09:50:31 -080083providing alternatives as arguments to the reporter. For example, ::
Joshua Hesketh5fea8672013-08-19 17:32:01 +100084
85 pipelines:
86 - name: post-merge
87 manager: IndependentPipelineManager
Joshua Heskethfe485c62015-08-11 23:42:34 +100088 source: my_gerrit
Joshua Hesketh5fea8672013-08-19 17:32:01 +100089 trigger:
Joshua Heskethfe485c62015-08-11 23:42:34 +100090 my_gerrit:
91 - event: change-merged
Joshua Hesketh5fea8672013-08-19 17:32:01 +100092 success:
Joshua Heskethfe485c62015-08-11 23:42:34 +100093 outgoing_smtp:
Joshua Hesketh5fea8672013-08-19 17:32:01 +100094 to: you@example.com
95 failure:
Joshua Heskethfe485c62015-08-11 23:42:34 +100096 internal_smtp:
Joshua Hesketh5fea8672013-08-19 17:32:01 +100097 to: you@example.com
98 from: alternative@example.com
James E. Blaire5910202013-12-27 09:50:31 -080099 subject: Change {change} failed
Joshua Heskethd78b4482015-09-14 16:56:34 -0600100
101SQL
102---
103
104This reporter is used to store results in a database.
105
106A :ref:`connection` that uses the sql driver must be supplied to the
107reporter.
108
109SQL Configuration
110~~~~~~~~~~~~~~~~~
111
112zuul.conf contains the database connection and credentials. To store different
113reports in different databases you'll need to create a new connection per
114database.
115
116The sql reporter is used to store the results from individual builds rather
117than the change. As such the sql reporter does nothing on "start" or
118"merge-failure".
119
120**score**
121 A score to store for the result of the build. eg: -1 might indicate a failed
122 build similar to the vote posted back via the gerrit reporter.
123
124For example ::
125
126 pipelines:
127 - name: post-merge
128 manager: IndependentPipelineManager
129 source: my_gerrit
130 trigger:
131 my_gerrit:
132 - event: change-merged
133 success:
134 mydb_conn:
135 score: 1
136 failure:
137 mydb_conn:
138 score: -1