summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-01-22 14:38:15 +0000
committerGerrit Code Review <review@openstack.org>2020-01-22 14:38:15 +0000
commita41b682ad2fb9869478aa25d66163c290b27e4af (patch)
treeb1e02e442f18d81457611a9ba68342ef3c3944fa
parent979770380151f99ec7b48d7d6fbd8d8d254c752c (diff)
parentf760f090fcb799e886d5724b41f073adc277af26 (diff)
downloadpython-jenkins-job-builder-a41b682ad2fb9869478aa25d66163c290b27e4af.tar.gz
python-jenkins-job-builder-a41b682ad2fb9869478aa25d66163c290b27e4af.tar.xz
python-jenkins-job-builder-a41b682ad2fb9869478aa25d66163c290b27e4af.zip
Merge "Add support for opsgenie notification plugin"
-rwxr-xr-x[-rw-r--r--]jenkins_jobs/modules/publishers.py47
-rwxr-xr-xtests/publishers/fixtures/opsgenie-full.xml15
-rwxr-xr-xtests/publishers/fixtures/opsgenie-full.yaml10
-rwxr-xr-xtests/publishers/fixtures/opsgenie-minimal.xml15
-rwxr-xr-xtests/publishers/fixtures/opsgenie-minimal.yaml2
5 files changed, 89 insertions, 0 deletions
diff --git a/jenkins_jobs/modules/publishers.py b/jenkins_jobs/modules/publishers.py
index cf8e938e..98145de7 100644..100755
--- a/jenkins_jobs/modules/publishers.py
+++ b/jenkins_jobs/modules/publishers.py
@@ -1311,6 +1311,53 @@ def ftp_publisher(registry, xml_parent, data):
helpers.convert_mapping_to_xml(ftp, data, mapping, fail_required=True)
+def opsgenie(registry, xml_parent, data):
+ """yaml: opsgenie
+ OpsGenie notification on build completion,
+ Requires the :jenkins-wiki:`OpsGenie Notifier Plugin <OpsGenie+Plugin>`.
+
+ :arg bool enable-sending-alerts: Send alerts to opsgenie. (default false)
+ :arg bool notify-build-start: Send a notification when the build starts. (default false)
+ :arg str api-key: This token is used to verify requests between OpsGenie and Jenkins. You can copy this key from your OpsGenie-Jenkins Integration page. (default '')
+ :arg str tags: Comma-separated list of tags you want to add on alert. (default '')
+ :arg str teams: Comma-separated list of teams that get notified from alert. (default '')
+ :arg str priority: Set the priority of the alert that's going to be created at OpsGenie, if job's build fails. (default 'P3')
+ :arg str build-starts-alerts-priority: Set the priority of the build started alert that's going to be created at OpsGenie. (default 'P3')
+ :arg str api-url: Api url that collects the webhook. (default '')
+
+ Minimal example:
+
+ .. literalinclude::
+ /../../tests/publishers/fixtures/opsgenie-minimal.yaml
+ :language: yaml
+
+ Full Example:
+
+ .. literalinclude::
+ /../../tests/publishers/fixtures/opsgenie-full.yaml
+ :language: yaml
+ """
+
+ mapping = [
+ ("priority", "alertPriority", "P3"),
+ ("build-starts-alerts-priority", "notifyBuildStartPriority", "P3"),
+ ("enable-sending-alerts", "enable", "false"),
+ ("notify-build-start", "notifyBuildStart", "false"),
+ ("api-key", "apiKey", ""),
+ ("api-url", "apiUrl", ""),
+ ("tags", "tags", ""),
+ ("teams", "teams", ""),
+ ]
+
+ opsgenie_notifier = XML.SubElement(
+ xml_parent,
+ "com.opsgenie.integration.jenkins.OpsGenieNotifier",
+ {"plugin": "opsgenie"},
+ )
+
+ helpers.convert_mapping_to_xml(opsgenie_notifier, data, mapping, fail_required=True)
+
+
def rocket(registry, xml_parent, data):
"""yaml: rocket
RocketChat notification on build completion,
diff --git a/tests/publishers/fixtures/opsgenie-full.xml b/tests/publishers/fixtures/opsgenie-full.xml
new file mode 100755
index 00000000..4e630e6e
--- /dev/null
+++ b/tests/publishers/fixtures/opsgenie-full.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <publishers>
+ <com.opsgenie.integration.jenkins.OpsGenieNotifier plugin="opsgenie">
+ <alertPriority>P1</alertPriority>
+ <notifyBuildStartPriority>P2</notifyBuildStartPriority>
+ <enable>true</enable>
+ <notifyBuildStart>true</notifyBuildStart>
+ <apiKey>test api key</apiKey>
+ <apiUrl>another-opsgenie-instance.com</apiUrl>
+ <tags>a,b,c</tags>
+ <teams>team a, team b</teams>
+ </com.opsgenie.integration.jenkins.OpsGenieNotifier>
+ </publishers>
+</project>
diff --git a/tests/publishers/fixtures/opsgenie-full.yaml b/tests/publishers/fixtures/opsgenie-full.yaml
new file mode 100755
index 00000000..3bc58059
--- /dev/null
+++ b/tests/publishers/fixtures/opsgenie-full.yaml
@@ -0,0 +1,10 @@
+publishers:
+- opsgenie:
+ enable-sending-alerts: true
+ notify-build-start: true
+ api-key: "test api key"
+ priority: "P1"
+ build-starts-alerts-priority: "P2"
+ api-url: "another-opsgenie-instance.com"
+ tags: "a,b,c"
+ teams: "team a, team b"
diff --git a/tests/publishers/fixtures/opsgenie-minimal.xml b/tests/publishers/fixtures/opsgenie-minimal.xml
new file mode 100755
index 00000000..21d7587b
--- /dev/null
+++ b/tests/publishers/fixtures/opsgenie-minimal.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <publishers>
+ <com.opsgenie.integration.jenkins.OpsGenieNotifier plugin="opsgenie">
+ <alertPriority>P3</alertPriority>
+ <notifyBuildStartPriority>P3</notifyBuildStartPriority>
+ <enable>false</enable>
+ <notifyBuildStart>false</notifyBuildStart>
+ <apiKey/>
+ <apiUrl/>
+ <tags/>
+ <teams/>
+ </com.opsgenie.integration.jenkins.OpsGenieNotifier>
+ </publishers>
+</project>
diff --git a/tests/publishers/fixtures/opsgenie-minimal.yaml b/tests/publishers/fixtures/opsgenie-minimal.yaml
new file mode 100755
index 00000000..d3c1d339
--- /dev/null
+++ b/tests/publishers/fixtures/opsgenie-minimal.yaml
@@ -0,0 +1,2 @@
+publishers:
+- opsgenie