From f760f090fcb799e886d5724b41f073adc277af26 Mon Sep 17 00:00:00 2001 From: John Oram Date: Fri, 13 Dec 2019 11:33:21 -0800 Subject: Add support for opsgenie notification plugin Change-Id: Id84b3d9282568cf47d5feb930fd618afe969b45f --- jenkins_jobs/modules/publishers.py | 47 +++++++++++++++++++++++++ tests/publishers/fixtures/opsgenie-full.xml | 15 ++++++++ tests/publishers/fixtures/opsgenie-full.yaml | 10 ++++++ tests/publishers/fixtures/opsgenie-minimal.xml | 15 ++++++++ tests/publishers/fixtures/opsgenie-minimal.yaml | 2 ++ 5 files changed, 89 insertions(+) mode change 100644 => 100755 jenkins_jobs/modules/publishers.py create mode 100755 tests/publishers/fixtures/opsgenie-full.xml create mode 100755 tests/publishers/fixtures/opsgenie-full.yaml create mode 100755 tests/publishers/fixtures/opsgenie-minimal.xml create mode 100755 tests/publishers/fixtures/opsgenie-minimal.yaml diff --git a/jenkins_jobs/modules/publishers.py b/jenkins_jobs/modules/publishers.py old mode 100644 new mode 100755 index cf8e938e..98145de7 --- 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 `. + + :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 @@ + + + + + P1 + P2 + true + true + test api key + another-opsgenie-instance.com + a,b,c + team a, team b + + + 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 @@ + + + + + P3 + P3 + false + false + + + + + + + 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 -- cgit