summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jenkins_jobs/modules/publishers.py6
-rw-r--r--tests/publishers/fixtures/email-ext003.xml188
-rw-r--r--tests/publishers/fixtures/email-ext003.yaml34
3 files changed, 228 insertions, 0 deletions
diff --git a/jenkins_jobs/modules/publishers.py b/jenkins_jobs/modules/publishers.py
index 7875c1e1..c90750e8 100644
--- a/jenkins_jobs/modules/publishers.py
+++ b/jenkins_jobs/modules/publishers.py
@@ -1926,6 +1926,8 @@ def base_email_ext(registry, xml_parent, data, ttype):
XML.SubElement(email, 'sendToDevelopers').text = 'false'
XML.SubElement(email, 'includeCulprits').text = 'false'
XML.SubElement(email, 'sendToRecipientList').text = 'true'
+ if ttype == 'ScriptTrigger':
+ XML.SubElement(trigger, 'triggerScript').text = data['trigger-script']
def email_ext(registry, xml_parent, data):
@@ -1977,6 +1979,8 @@ def email_ext(registry, xml_parent, data):
:arg bool still-unstable: Send an email if the build is still unstable
(default false)
:arg bool pre-build: Send an email before the build (default false)
+ :arg str trigger-script: A Groovy script used to determine if an email
+ should be sent.
:arg str presend-script: A Groovy script executed prior sending the mail.
(default '')
:arg str postsend-script: A Goovy script executed after sending the email.
@@ -2037,6 +2041,8 @@ def email_ext(registry, xml_parent, data):
base_email_ext(registry, ctrigger, data, 'StillUnstableTrigger')
if data.get('pre-build', False):
base_email_ext(registry, ctrigger, data, 'PreBuildTrigger')
+ if data.get('trigger-script', False):
+ base_email_ext(registry, ctrigger, data, 'ScriptTrigger')
content_type_mime = {
'text': 'text/plain',
diff --git a/tests/publishers/fixtures/email-ext003.xml b/tests/publishers/fixtures/email-ext003.xml
new file mode 100644
index 00000000..880ce7fc
--- /dev/null
+++ b/tests/publishers/fixtures/email-ext003.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <publishers>
+ <hudson.plugins.emailext.ExtendedEmailPublisher>
+ <recipientList>foo@example.com, bar@example.com</recipientList>
+ <configuredTriggers>
+ <hudson.plugins.emailext.plugins.trigger.AlwaysTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.AlwaysTrigger>
+ <hudson.plugins.emailext.plugins.trigger.UnstableTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.UnstableTrigger>
+ <hudson.plugins.emailext.plugins.trigger.FirstFailureTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.FirstFailureTrigger>
+ <hudson.plugins.emailext.plugins.trigger.NotBuiltTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.NotBuiltTrigger>
+ <hudson.plugins.emailext.plugins.trigger.AbortedTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.AbortedTrigger>
+ <hudson.plugins.emailext.plugins.trigger.RegressionTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.RegressionTrigger>
+ <hudson.plugins.emailext.plugins.trigger.FailureTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.FailureTrigger>
+ <hudson.plugins.emailext.plugins.trigger.SecondFailureTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.SecondFailureTrigger>
+ <hudson.plugins.emailext.plugins.trigger.ImprovementTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.ImprovementTrigger>
+ <hudson.plugins.emailext.plugins.trigger.StillFailingTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.StillFailingTrigger>
+ <hudson.plugins.emailext.plugins.trigger.SuccessTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.SuccessTrigger>
+ <hudson.plugins.emailext.plugins.trigger.FixedTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.FixedTrigger>
+ <hudson.plugins.emailext.plugins.trigger.StillUnstableTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.StillUnstableTrigger>
+ <hudson.plugins.emailext.plugins.trigger.PreBuildTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ </hudson.plugins.emailext.plugins.trigger.PreBuildTrigger>
+ <hudson.plugins.emailext.plugins.trigger.ScriptTrigger>
+ <email>
+ <recipientList/>
+ <subject>$PROJECT_DEFAULT_SUBJECT</subject>
+ <body>$PROJECT_DEFAULT_CONTENT</body>
+ <sendToDevelopers>true</sendToDevelopers>
+ <sendToRequester>true</sendToRequester>
+ <includeCulprits>true</includeCulprits>
+ <sendToRecipientList>true</sendToRecipientList>
+ </email>
+ <triggerScript>build.result.toString().equals('SUCCESS')</triggerScript>
+ </hudson.plugins.emailext.plugins.trigger.ScriptTrigger>
+ </configuredTriggers>
+ <contentType>text/html</contentType>
+ <defaultSubject>Subject for Build ${BUILD_NUMBER}</defaultSubject>
+ <defaultContent>The build has finished</defaultContent>
+ <attachmentsPattern>*/foo*.log</attachmentsPattern>
+ <presendScript>cancel=true</presendScript>
+ <postsendScript>cancel=true</postsendScript>
+ <attachBuildLog>false</attachBuildLog>
+ <compressBuildLog>false</compressBuildLog>
+ <saveOutput>true</saveOutput>
+ <disabled>false</disabled>
+ <replyTo>foo@example.com</replyTo>
+ <matrixTriggerMode>ONLY_CONFIGURATIONS</matrixTriggerMode>
+ </hudson.plugins.emailext.ExtendedEmailPublisher>
+ </publishers>
+</project>
diff --git a/tests/publishers/fixtures/email-ext003.yaml b/tests/publishers/fixtures/email-ext003.yaml
new file mode 100644
index 00000000..0ad5c294
--- /dev/null
+++ b/tests/publishers/fixtures/email-ext003.yaml
@@ -0,0 +1,34 @@
+publishers:
+ - email-ext:
+ recipients: foo@example.com, bar@example.com
+ reply-to: foo@example.com
+ content-type: html
+ subject: Subject for Build ${BUILD_NUMBER}
+ body: The build has finished
+ attach-build-log: false
+ compress-log: false
+ attachments: "*/foo*.log"
+ always: true
+ unstable: true
+ first-failure: true
+ not-built: true
+ aborted: true
+ regression: true
+ failure: true
+ second-failure: true
+ improvement: true
+ still-failing: true
+ success: true
+ fixed: true
+ still-unstable: true
+ pre-build: true
+ trigger-script: "build.result.toString().equals('SUCCESS')"
+ matrix-trigger: only-configurations
+ presend-script: "cancel=true"
+ postsend-script: "cancel=true"
+ save-output: true
+ send-to:
+ - developers
+ - requester
+ - culprits
+ - recipients