From 58b9fd9ca67e31808b3aeb8c009e675535db9f00 Mon Sep 17 00:00:00 2001 From: Thanh Ha Date: Sat, 22 Nov 2014 21:57:20 -0500 Subject: [PATCH] Add support for Gerrit Trigger Comment Contains Expression Change-Id: I229c7fc2fac540a6fe3209221ca01dcf6dd068df Signed-off-by: Thanh Ha --- jenkins_jobs/modules/triggers.py | 40 ++++++++++++++++----- tests/triggers/fixtures/gerrit006.xml | 50 ++++++++++++++++++++++++++ tests/triggers/fixtures/gerrit006.yaml | 23 ++++++++++++ 3 files changed, 104 insertions(+), 9 deletions(-) create mode 100644 tests/triggers/fixtures/gerrit006.xml create mode 100644 tests/triggers/fixtures/gerrit006.yaml diff --git a/jenkins_jobs/modules/triggers.py b/jenkins_jobs/modules/triggers.py index 5569e2d4c..0ffaac9d6 100644 --- a/jenkins_jobs/modules/triggers.py +++ b/jenkins_jobs/modules/triggers.py @@ -137,23 +137,37 @@ def build_gerrit_triggers(xml_parent, data): if event == 'patchset-uploaded-event': logger.warn("'%s' is deprecated. Use 'patchset-created-event'" "instead.", event) + if not tag_name: known = ', '.join(available_simple_triggers.keys() - + ['comment-added-event']) + + ['comment-added-event', + 'comment-added-contains-event']) msg = ("The event '%s' under 'trigger-on' is not one of the " "known: %s.") % (event, known) raise JenkinsJobsException(msg) XML.SubElement(trigger_on_events, '%s.%s' % (tag_namespace, tag_name)) else: - comment_added_event = event['comment-added-event'] - cadded = XML.SubElement( - trigger_on_events, - '%s.%s' % (tag_namespace, 'PluginCommentAddedEvent')) - XML.SubElement(cadded, 'verdictCategory').text = \ - comment_added_event['approval-category'] - XML.SubElement(cadded, 'commentAddedTriggerApprovalValue').text = \ - str(comment_added_event['approval-value']) + if 'comment-added-event' in event.keys(): + comment_added_event = event['comment-added-event'] + cadded = XML.SubElement( + trigger_on_events, + '%s.%s' % (tag_namespace, 'PluginCommentAddedEvent')) + XML.SubElement(cadded, 'verdictCategory').text = \ + comment_added_event['approval-category'] + XML.SubElement( + cadded, + 'commentAddedTriggerApprovalValue').text = \ + str(comment_added_event['approval-value']) + + if 'comment-added-contains-event' in event.keys(): + comment_added_event = event['comment-added-contains-event'] + caddedc = XML.SubElement( + trigger_on_events, + '%s.%s' % (tag_namespace, + 'PluginCommentAddedContainsEvent')) + XML.SubElement(caddedc, 'commentAddedCommentContains').text = \ + comment_added_event['comment-contains-value'] def build_gerrit_skip_votes(xml_parent, data): @@ -209,6 +223,14 @@ def gerrit(parser, xml_parent, data): access-control.html#categories>`_ * **approval-value** -- Approval value for the comment added. + * **comment-added-contains-event** (`dict`) -- Trigger on comment + added contains + Regular Expression. + + :Comment added contains: + * **comment-contains-value** (`str`) -- Comment contains + Regular Expression + value. :arg bool trigger-on-patchset-uploaded-event: Trigger on patchset upload. diff --git a/tests/triggers/fixtures/gerrit006.xml b/tests/triggers/fixtures/gerrit006.xml new file mode 100644 index 000000000..35580104a --- /dev/null +++ b/tests/triggers/fixtures/gerrit006.xml @@ -0,0 +1,50 @@ + + + + + + + + PLAIN + test-project + + + ANT + ** + + + + + ANT + subdirectory/** + + + + + + true + true + true + true + + false + false + false + True + http://myhost/mytrigger + false + + + recheck + + + + + + + + + __ANY__ + + + diff --git a/tests/triggers/fixtures/gerrit006.yaml b/tests/triggers/fixtures/gerrit006.yaml new file mode 100644 index 000000000..9a98f7c0e --- /dev/null +++ b/tests/triggers/fixtures/gerrit006.yaml @@ -0,0 +1,23 @@ +triggers: + - gerrit: + trigger-on: + - comment-added-contains-event: + comment-contains-value: 'recheck' + projects: + - project-compare-type: 'PLAIN' + project-pattern: 'test-project' + branch-compare-type: 'ANT' + branch-pattern: '**' + file-paths: + - compare-type: ANT + pattern: subdirectory/** + skip-vote: + successful: true + failed: true + unstable: true + notbuilt: true + silent: false + escape-quotes: false + no-name-and-email: false + dynamic-trigger-enabled: true + dynamic-trigger-url: http://myhost/mytrigger \ No newline at end of file