Joshua Hesketh | 1879cf7 | 2013-08-19 14:13:15 +1000 | [diff] [blame] | 1 | :title: Reporters |
| 2 | |
| 3 | Reporters |
| 4 | ========= |
| 5 | |
| 6 | Zuul can communicate results and progress back to configurable |
| 7 | protocols. For example, after succeeding in a build a pipeline can be |
Michael Prokop | 526926a | 2013-10-24 16:16:57 +0200 | [diff] [blame] | 8 | configured to post a positive review back to Gerrit. |
Joshua Hesketh | 1879cf7 | 2013-08-19 14:13:15 +1000 | [diff] [blame] | 9 | |
| 10 | There are three stages when a report can be handled. That is on: |
| 11 | Start, Success or Failure. Each stage can have multiple reports. |
Michael Prokop | 526926a | 2013-10-24 16:16:57 +0200 | [diff] [blame] | 12 | For example, you can set verified on Gerrit and send an email. |
Joshua Hesketh | 1879cf7 | 2013-08-19 14:13:15 +1000 | [diff] [blame] | 13 | |
| 14 | Gerrit |
| 15 | ------ |
| 16 | |
| 17 | Zuul works with standard versions of Gerrit by invoking the |
| 18 | ``gerrit`` command over an SSH connection. It reports back to |
| 19 | Gerrit using SSH. |
| 20 | |
Michael Prokop | 526926a | 2013-10-24 16:16:57 +0200 | [diff] [blame] | 21 | The dictionary passed to the Gerrit reporter is used for ``gerrit |
Joshua Hesketh | 1879cf7 | 2013-08-19 14:13:15 +1000 | [diff] [blame] | 22 | review`` arguments, with the boolean value of ``true`` simply |
| 23 | indicating that the argument should be present without following it |
| 24 | with a value. For example, ``verified: 1`` becomes ``gerrit review |
| 25 | --verified 1`` and ``submit: true`` becomes ``gerrit review |
| 26 | --submit``. |
| 27 | |
Joshua Hesketh | fe485c6 | 2015-08-11 23:42:34 +1000 | [diff] [blame] | 28 | A :ref:`connection` that uses the gerrit driver must be supplied to the |
| 29 | trigger. |
Joshua Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 30 | |
Wayne | 40f4004 | 2015-06-12 16:56:30 -0700 | [diff] [blame] | 31 | GitHub |
| 32 | ------ |
| 33 | |
| 34 | Zuul reports back to GitHub pull requests via GitHub API. |
Jan Hruban | e252a73 | 2017-01-03 15:03:09 +0100 | [diff] [blame] | 35 | On success and failure, it creates a comment containing the build results. |
| 36 | It also sets the status on start, success and failure. Status name and |
| 37 | description is taken from the pipeline. |
| 38 | |
| 39 | A :ref:`connection` that uses the github driver must be supplied to the |
| 40 | reporter. 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`` |
Wayne | 40f4004 | 2015-06-12 16:56:30 -0700 | [diff] [blame] | 52 | |
Jan Hruban | 49bff07 | 2015-11-03 11:45:46 +0100 | [diff] [blame] | 53 | **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 Hruban | 16ad31f | 2015-11-07 14:39:07 +0100 | [diff] [blame] | 58 | **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 Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 68 | SMTP |
| 69 | ---- |
| 70 | |
| 71 | A simple email reporter is also available. |
| 72 | |
Joshua Hesketh | fe485c6 | 2015-08-11 23:42:34 +1000 | [diff] [blame] | 73 | A :ref:`connection` that uses the smtp driver must be supplied to the |
Joshua Hesketh | d78b448 | 2015-09-14 16:56:34 -0600 | [diff] [blame] | 74 | reporter. |
Joshua Hesketh | fe485c6 | 2015-08-11 23:42:34 +1000 | [diff] [blame] | 75 | |
Joshua Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 76 | SMTP Configuration |
| 77 | ~~~~~~~~~~~~~~~~~~ |
| 78 | |
Łukasz Jernaś | 048acb4 | 2014-03-02 18:49:41 +0100 | [diff] [blame] | 79 | zuul.conf contains the SMTP server and default to/from as described |
Joshua Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 80 | in :ref:`zuulconf`. |
| 81 | |
Łukasz Jernaś | 048acb4 | 2014-03-02 18:49:41 +0100 | [diff] [blame] | 82 | Each pipeline can overwrite the ``subject`` or the ``to`` or ``from`` address by |
James E. Blair | e591020 | 2013-12-27 09:50:31 -0800 | [diff] [blame] | 83 | providing alternatives as arguments to the reporter. For example, :: |
Joshua Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 84 | |
| 85 | pipelines: |
| 86 | - name: post-merge |
| 87 | manager: IndependentPipelineManager |
Joshua Hesketh | fe485c6 | 2015-08-11 23:42:34 +1000 | [diff] [blame] | 88 | source: my_gerrit |
Joshua Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 89 | trigger: |
Joshua Hesketh | fe485c6 | 2015-08-11 23:42:34 +1000 | [diff] [blame] | 90 | my_gerrit: |
| 91 | - event: change-merged |
Joshua Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 92 | success: |
Joshua Hesketh | fe485c6 | 2015-08-11 23:42:34 +1000 | [diff] [blame] | 93 | outgoing_smtp: |
Joshua Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 94 | to: you@example.com |
| 95 | failure: |
Joshua Hesketh | fe485c6 | 2015-08-11 23:42:34 +1000 | [diff] [blame] | 96 | internal_smtp: |
Joshua Hesketh | 5fea867 | 2013-08-19 17:32:01 +1000 | [diff] [blame] | 97 | to: you@example.com |
| 98 | from: alternative@example.com |
James E. Blair | e591020 | 2013-12-27 09:50:31 -0800 | [diff] [blame] | 99 | subject: Change {change} failed |
Joshua Hesketh | d78b448 | 2015-09-14 16:56:34 -0600 | [diff] [blame] | 100 | |
| 101 | SQL |
| 102 | --- |
| 103 | |
| 104 | This reporter is used to store results in a database. |
| 105 | |
| 106 | A :ref:`connection` that uses the sql driver must be supplied to the |
| 107 | reporter. |
| 108 | |
| 109 | SQL Configuration |
| 110 | ~~~~~~~~~~~~~~~~~ |
| 111 | |
| 112 | zuul.conf contains the database connection and credentials. To store different |
| 113 | reports in different databases you'll need to create a new connection per |
| 114 | database. |
| 115 | |
| 116 | The sql reporter is used to store the results from individual builds rather |
| 117 | than 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 | |
| 124 | For 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 |