Add a publisher for MQTT

Add support for the MQTT Notification Plugin
(https://wiki.jenkins-ci.org/display/JENKINS/MQTT+Notification+Plugin)

Change-Id: Ibe867a15f5621601a45c2e1d6281f4db67df29d7
This commit is contained in:
mhuin 2017-02-01 15:58:30 +01:00 committed by Matthieu Huin
parent 7e3edde3dc
commit a5eb235881
5 changed files with 82 additions and 0 deletions

View File

@ -300,6 +300,52 @@ def campfire(registry, xml_parent, data):
XML.SubElement(room, 'campfire reference="../../campfire"')
def mqtt(registry, xml_parent, data):
"""yaml: mqtt
This plugin lets you send build notifications to a MQTT message queue.
Requires the :jenkins-wiki:`MQTT Notification Plugin
<MQTT+Notification+Plugin>`.
:arg str broker-url: the broker URL, as protocol://address:port (required)
:arg str credentials-id: credentials to use to connect to the broker
(optional)
:arg str topic: the message topic (default "jenkins/$PROJECT_URL")
:arg str message: the message itself (default "$BUILD_RESULT")
:arg str qos: one of AT_MOST_ONCE, AT_LEAST_ONCE, or EXACTLY_ONCE
(default AT_MOST_ONCE)
:arg bool retain-message: whether to resend message or not when a new
client connects (default false)
Minimal Example:
.. literalinclude:: /../../tests/publishers/fixtures/mqtt-minimal.yaml
:language: yaml
Full Example:
.. literalinclude:: /../../tests/publishers/fixtures/mqtt-full.yaml
:language: yaml
"""
mqtt = XML.SubElement(xml_parent,
'jenkins.plugins.mqttnotification.MqttNotifier')
mqtt.set('plugin', 'mqtt-notification-plugin')
mqtt_mapping = [
('broker-url', 'brokerUrl', None), ]
helpers.convert_mapping_to_xml(mqtt, data, mqtt_mapping,
fail_required=True)
mqtt_mapping = [
('credentials-id', 'credentialsId', None),
('topic', 'topic', 'jenkins/$PROJECT_URL'),
('message', 'message', '$BUILD_RESULT'),
('qos', 'qos', 'AT_MOST_ONCE', {'AT_MOST_ONCE': '0',
'AT_LEAST_ONCE': '1',
'EXACTLY_ONCE': '2'}),
('retain-message', 'retainMessage', False)
]
helpers.convert_mapping_to_xml(mqtt, data, mqtt_mapping)
def codecover(registry, xml_parent, data):
"""yaml: codecover
This plugin allows you to capture code coverage report from CodeCover.

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<publishers>
<jenkins.plugins.mqttnotification.MqttNotifier plugin="mqtt-notification-plugin">
<brokerUrl>tcp://localhost:1883</brokerUrl>
<credentialsId>abcde</credentialsId>
<topic>hello</topic>
<message>world</message>
<qos>2</qos>
<retainMessage>true</retainMessage>
</jenkins.plugins.mqttnotification.MqttNotifier>
</publishers>
</project>

View File

@ -0,0 +1,8 @@
publishers:
- mqtt:
broker-url: tcp://localhost:1883
topic: hello
message: world
qos: EXACTLY_ONCE
retain-message: true
credentials-id: abcde

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<publishers>
<jenkins.plugins.mqttnotification.MqttNotifier plugin="mqtt-notification-plugin">
<brokerUrl>tcp://localhost:1883</brokerUrl>
<topic>jenkins/$PROJECT_URL</topic>
<message>$BUILD_RESULT</message>
<qos>0</qos>
<retainMessage>false</retainMessage>
</jenkins.plugins.mqttnotification.MqttNotifier>
</publishers>
</project>

View File

@ -0,0 +1,3 @@
publishers:
- mqtt:
broker-url: tcp://localhost:1883