zuul/doc/source/admin/drivers/mqtt.rst

5.3 KiB

title

MQTT Driver

MQTT

The MQTT driver supports reporters only. It is used to send MQTT message when items report.

Message Schema

An MQTT report uses this schema:

<mqtt schema>

action

The reporter action name, e.g.: 'start', 'success', 'failure', 'merge-failure', ...

tenant

The tenant name.

pipeline

The pipeline name.

project

The project name.

branch

The branch name.

change_url

The change url.

message

The report message.

change

The change number.

patchset

The patchset number.

ref

The change reference.

zuul_ref

The internal zuul change reference.

buildset

The buildset information.

uuid

The buildset global uuid.

builds

The list of builds.

job_name

The job name.

voting

The job voting status.

uuid

The build uuid (not present in start report).

start_time

The build start time (not present in start report).

end_time

The build end time (not present in start report).

log_url

The build log url (not present in start report).

result

The build results (not present in start report).

Here is an example of a start message:

{
  'action': 'start',
  'tenant': 'openstack.org',
  'pipeline': 'check',
  'project': 'sf-jobs',
  'branch': 'master',
  'change_url': 'https://gerrit.example.com/r/3',
  'message': 'Starting check jobs.',
  'change': '3',
  'patchset': '1',
  "ref": "refs/changes/03/3/1",
  'zuul_ref': 'Zf8b3d7cd34f54cb396b488226589db8f'
  'buildset': {
    'uuid': 'f8b3d7cd34f54cb396b488226589db8f'
    'builds': [{
      'job_name': 'linters',
      'voting': True
    }],
  },
}

Here is an example of a success message:

{
  'action': 'success',
  'tenant': 'openstack.org',
  'pipeline': 'check',
  'project': 'sf-jobs',
  'branch': 'master',
  'change_url': 'https://gerrit.example.com/r/3',
  'message': 'Build succeeded.',
  'change': '3',
  'patchset': '1',
  "ref": "refs/changes/03/3/1",
  'zuul_ref': 'Zf8b3d7cd34f54cb396b488226589db8f'
  'buildset': {
    'uuid': 'f8b3d7cd34f54cb396b488226589db8f'
    'builds': [{
      'job_name': 'linters',
      'voting': True
      'uuid': '16e3e55aca984c6c9a50cc3c5b21bb83',
      'start_time': 1524801179.8557224,
      'end_time': 1524801208.928095,
      'log_url': 'https://logs.example.com/logs/3/3/1/check/linters/16e3e55/',
      'result': 'SUCCESS',
    }],
  },
}

Connection Configuration

<mqtt connection>

driver

mqtt

The connection must set driver=mqtt for MQTT connections.

server

MQTT server hostname or address to use.

port

MQTT server port.

keepalive

Maximum period in seconds allowed between communications with the broker.

user

Set a username for optional broker authentication.

password

Set a password for optional broker authentication.

ca_certs

A string path to the Certificate Authority certificate files to enable TLS connection.

certfile

A strings pointing to the PEM encoded client certificate to enable client TLS based authentication. This option requires keyfile to be set too.

keyfile

A strings pointing to the PEM encoded client private keys to enable client TLS based authentication. This option requires certfile to be set too.

ciphers

A string specifying which encryption ciphers are allowable for this connection. More information in this openssl doc.

Reporter Configuration

A connection<connections> that uses the mqtt driver must be supplied to the reporter. Each pipeline must provide a topic name. For example:

- pipeline:
    name: check
    success:
      mqtt:
        topic: "{tenant}/zuul/{pipeline}/{project}/{branch}/{change}"
        qos: 2

pipeline.<reporter>.<mqtt>

To report via MQTT message, the dictionaries passed to any of the pipeline reporter<reporters> support the following attributes:

topic

The MQTT topic to publish messages. The topic can be a format string that can use the following parameters: tenant, pipeline, project, branch, change, patchset and ref. MQTT topic can have hierarchy separated by /, more details in this doc

qos

The quality of service level to use, it can be 0, 1 or 2. Read more in this guide