summaryrefslogtreecommitdiffstats
path: root/jenkins_jobs/modules/reporters.py
diff options
context:
space:
mode:
authorJames E. Blair <jeblair@hp.com>2012-09-19 21:18:31 +0200
committerJenkins <jenkins@review.openstack.org>2012-09-20 15:20:45 +0000
commita7d33f1b0de676f2e1d0000fa26b3e7f6974ff2b (patch)
tree14f10b1589584a928ea3f840adc480db33715658 /jenkins_jobs/modules/reporters.py
parentdb35627b524a7ad2762fea9a88365cd212b2063a (diff)
downloadpython-jenkins-job-builder-a7d33f1b0de676f2e1d0000fa26b3e7f6974ff2b.tar.gz
python-jenkins-job-builder-a7d33f1b0de676f2e1d0000fa26b3e7f6974ff2b.tar.xz
python-jenkins-job-builder-a7d33f1b0de676f2e1d0000fa26b3e7f6974ff2b.zip
Add email publisher/reporter.
Also, add reporters module. Change-Id: I9cd0abca3d90f1af5f275698ecc9ccb7d9086494 Reviewed-on: https://review.openstack.org/13303 Reviewed-by: Monty Taylor <mordred@inaugust.com> Reviewed-by: Clark Boylan <clark.boylan@gmail.com> Approved: James E. Blair <corvus@inaugust.com> Tested-by: Jenkins
Diffstat (limited to 'jenkins_jobs/modules/reporters.py')
-rw-r--r--jenkins_jobs/modules/reporters.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/jenkins_jobs/modules/reporters.py b/jenkins_jobs/modules/reporters.py
new file mode 100644
index 00000000..2ebbb8f1
--- /dev/null
+++ b/jenkins_jobs/modules/reporters.py
@@ -0,0 +1,85 @@
+# Copyright 2012 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+
+"""
+Reporters are like publishers but only applicable to Maven projets.
+
+**Component**: reporters
+ :Macro: reporter
+ :Entry Point: jenkins_jobs.reporters
+
+Example::
+
+ job:
+ name: test_job
+ project-type: maven
+
+ reporters:
+ - email:
+ recipients: breakage@example.com
+"""
+
+
+import xml.etree.ElementTree as XML
+import jenkins_jobs.modules.base
+
+
+def email(parser, xml_parent, data):
+ """yaml: email
+ Email notifications on build failure.
+
+ :arg str recipients: Recipient email addresses
+ :arg bool notify-every-unstable-build: Send an email for every
+ unstable build (default true)
+ :arg bool send-to-individuals: Send an email to the individual
+ who broke the build (default false)
+
+ Example::
+
+ reporters:
+ - email:
+ recipients: breakage@example.com
+ """
+
+ mailer = XML.SubElement(xml_parent,
+ 'hudson.maven.reporters.Mailer')
+ XML.SubElement(mailer, 'recipients').text = data['recipients']
+
+ # Note the logic reversal (included here to match the GUI
+ if data.get('notify-every-unstable-build', True):
+ XML.SubElement(mailer, 'dontNotifyEveryUnstableBuild').text = 'false'
+ else:
+ XML.SubElement(mailer, 'dontNotifyEveryUnstableBuild').text = 'true'
+ XML.SubElement(mailer, 'sendToIndividuals').text = str(
+ data.get('send-to-individuals', False)).lower()
+ # TODO: figure out what this is:
+ XML.SubElement(mailer, 'perModuleEmail').text = 'true'
+
+
+class Reporters(jenkins_jobs.modules.base.Base):
+ sequence = 55
+
+ def gen_xml(self, parser, xml_parent, data):
+ if 'reporters' not in data:
+ return
+
+ if xml_parent.tag != 'maven2-moduleset':
+ raise Exception("Reporters may only be used for Maven modules.")
+
+ reporters = XML.SubElement(xml_parent, 'reporters')
+
+ for action in data.get('reporters', []):
+ self._dispatch('reporter', 'reporters',
+ parser, reporters, action)