blob: ae6ab1cef61f1c627c985c058aed742f66812ad7 [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
Jesse Keating89680072017-06-14 10:37:11 -070034Zuul reports back to GitHub via GitHub API. Available reports include a PR
35comment containing the build results, a commit status on start, success and
36failure, an issue label addition/removal on the PR, and a merge of the PR
37itself. Status name, description, and context is taken from the pipeline.
Jan Hrubane252a732017-01-03 15:03:09 +010038
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
K Jonathan Harker0c40cdc2017-06-02 11:31:34 -070047 **status-url**
48 String value for a link url to set in the github status. Defaults to the zuul
49 server status_url, or the empty string if that is unset.
50
Jan Hrubane252a732017-01-03 15:03:09 +010051 **comment**
52 Boolean value (``true`` or ``false``) that determines if the reporter should
53 add a comment to the pipeline status to the github pull request. Defaults
Jesse Keating89680072017-06-14 10:37:11 -070054 to ``true``. Only used for Pull Request based events.
Jan Hrubane252a732017-01-03 15:03:09 +010055 ``comment: false``
Wayne40f40042015-06-12 16:56:30 -070056
Jan Hruban49bff072015-11-03 11:45:46 +010057 **merge**
58 Boolean value (``true`` or ``false``) that determines if the reporter should
Jesse Keating89680072017-06-14 10:37:11 -070059 merge the pull reqeust. Defaults to ``false``. Only used for Pull Request based
60 events.
Jan Hruban49bff072015-11-03 11:45:46 +010061 ``merge=true``
62
Jan Hruban16ad31f2015-11-07 14:39:07 +010063 **label**
64 List of strings each representing an exact label name which should be added
Jesse Keating89680072017-06-14 10:37:11 -070065 to the pull request by reporter. Only used for Pull Request based events.
Jan Hruban16ad31f2015-11-07 14:39:07 +010066 ``label: 'test successful'``
67
68 **unlabel**
69 List of strings each representing an exact label name which should be removed
Jesse Keating89680072017-06-14 10:37:11 -070070 from the pull request by reporter. Only used for Pull Request based events.
Jan Hruban16ad31f2015-11-07 14:39:07 +010071 ``unlabel: 'test failed'``
72
Joshua Hesketh5fea8672013-08-19 17:32:01 +100073SMTP
74----
75
76A simple email reporter is also available.
77
Joshua Heskethfe485c62015-08-11 23:42:34 +100078A :ref:`connection` that uses the smtp driver must be supplied to the
Joshua Heskethd78b4482015-09-14 16:56:34 -060079reporter.
Joshua Heskethfe485c62015-08-11 23:42:34 +100080
Joshua Hesketh5fea8672013-08-19 17:32:01 +100081SMTP Configuration
82~~~~~~~~~~~~~~~~~~
83
Łukasz Jernaś048acb42014-03-02 18:49:41 +010084zuul.conf contains the SMTP server and default to/from as described
Joshua Hesketh5fea8672013-08-19 17:32:01 +100085in :ref:`zuulconf`.
86
Łukasz Jernaś048acb42014-03-02 18:49:41 +010087Each pipeline can overwrite the ``subject`` or the ``to`` or ``from`` address by
James E. Blaire5910202013-12-27 09:50:31 -080088providing alternatives as arguments to the reporter. For example, ::
Joshua Hesketh5fea8672013-08-19 17:32:01 +100089
90 pipelines:
91 - name: post-merge
92 manager: IndependentPipelineManager
Joshua Heskethfe485c62015-08-11 23:42:34 +100093 source: my_gerrit
Joshua Hesketh5fea8672013-08-19 17:32:01 +100094 trigger:
Joshua Heskethfe485c62015-08-11 23:42:34 +100095 my_gerrit:
96 - event: change-merged
Joshua Hesketh5fea8672013-08-19 17:32:01 +100097 success:
Joshua Heskethfe485c62015-08-11 23:42:34 +100098 outgoing_smtp:
Joshua Hesketh5fea8672013-08-19 17:32:01 +100099 to: you@example.com
100 failure:
Joshua Heskethfe485c62015-08-11 23:42:34 +1000101 internal_smtp:
Joshua Hesketh5fea8672013-08-19 17:32:01 +1000102 to: you@example.com
103 from: alternative@example.com
James E. Blaire5910202013-12-27 09:50:31 -0800104 subject: Change {change} failed
Joshua Heskethd78b4482015-09-14 16:56:34 -0600105
106SQL
107---
108
109This reporter is used to store results in a database.
110
111A :ref:`connection` that uses the sql driver must be supplied to the
112reporter.
113
114SQL Configuration
115~~~~~~~~~~~~~~~~~
116
117zuul.conf contains the database connection and credentials. To store different
118reports in different databases you'll need to create a new connection per
119database.
120
121The sql reporter is used to store the results from individual builds rather
122than the change. As such the sql reporter does nothing on "start" or
123"merge-failure".
124
125**score**
126 A score to store for the result of the build. eg: -1 might indicate a failed
127 build similar to the vote posted back via the gerrit reporter.
128
129For example ::
130
131 pipelines:
132 - name: post-merge
133 manager: IndependentPipelineManager
134 source: my_gerrit
135 trigger:
136 my_gerrit:
137 - event: change-merged
138 success:
139 mydb_conn:
140 score: 1
141 failure:
142 mydb_conn:
143 score: -1